SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-Replication)

简介:

  《Windows Azure Platform 系列文章目录

 

  熟悉Microsoft Azure平台的读者都了解,Azure SQL Database提供不同等级的,跨数据中心的异地冗余功能。

  -  Basic模式,不提供异地冗余能力

  -  Standard模式,提供跨数据中心的异地冗余数据库。但是这个冗余数据库是冷备份。无法提供读取操作

  -  Premium模式,提供只读跨数据中心的异地冗余数据库。这个冗余数据库只能提供读操作

 

  如果你的Azure SQL Database需要比较低的DTU,但是需要跨数据中心的异地冗余的能力。你不得不把SQL Azure的性能升级到Premium级别,只有P级别只读异地冗余的数据库

 

  现在最新的SQL Azure,同时支持Basic, Standard和Premium级别,都可以创建跨数据中心标准地域复制(Standard Geo-Replication),最多支持4个只读副本。

  

  而且,SQL Azure Standard Geo-Replication支持故障转移。

  当我们SQL Azure主站点在Azure上海数据中心,只读站点在Azure北京数据中心。当上海数据中心发生故障的时候,我们可以手动Failover,将原来的主站点(上海)和只读站点(北京)做切换。即Azure北京数据中心作为主站点,Azure上海数据中心作为只读站点。这样保证我们的业务不会因为上海数据中心发生故障,造成业务宕机。

  

  灾难恢复演练(Disaster Recovery Drills)

  请注意,SQL Azure故障转移是和数据有关,并且是破坏性的方法。所以我们要周期性的测试故障转移工作流,以确保应用程序的一致性和稳定性,这个过程称为灾难恢复演练(Disaster Recovery Drills)。我们可以按照如下方法测试数据库灾难恢复演练:关闭跨数据中心标准地域复制(Standard Geo-Replication)。

  注意,当我们关闭跨数据中心标准地域复制(Standard Geo-Replication)的时候,在主站点已经提交的事务,如果没有在备份节点提交,则这些事务会丢失。因为可能会产生数据丢失的风险,我们不推荐在生产环境里实施灾难恢复演练(DR Drills)。我们建议在主站点数据中心创建一个测试数据库,然后对这个测试数据库实施灾难恢复演练。

  

  接下来是我们的演示内容。演示中,有几个关键步骤:

  (1)注意,这里牵涉到Azure Resource Group的概念,在默认情况下,Azure上海数据中心的ResourceGroupName为Default-SQL-ChinaEast

  Azure北京数据中心的ResourceGroupName为Default-SQL-ChinaNorth

  (2)我们在Azure上海数据中心创建SQL Azure Server,在北京数据中心创建SQL Azure Server

  (3)在上海数据中心,创建数据库TestDB

  (4)运行Azure PowerShell,在北京数据中心创建只读数据库

  (5)验证上海数据中心的数据库是可读写,北京数据库中心的数据库是只读

  (6)运行Azure PowerShell,设置故障转移(Failover)。设置完毕后,北京数据中心可读写,上海数据中心只读。

 

  1.在Azure上海数据中心创建SQL Azure Server,在北京数据中心创建SQL Azure Server

  

  创建完毕后,Azure上海数据中心 SQL Azure Server:hfgmi3msar.database.chinacloudapi.cn,1433

  Azure上海北京数据中心SQL Azure Server:dbcljcn986.database.chinacloudapi.cn,1433

 

  2.在上海数据中心,创建数据库TestDB

  

  

  执行完毕后,上海站点是主站点,SQL Azure数据可读写。北京站点是只读站点,SQL Azure数据只读。

 

  3-5的Azure PowerShell步骤如下:

复制代码
#弹出界面输入用户名密码
Add-AzureRmAccount -EnvironmentName AzureChinaCloud

#设置当前订阅名称
Select-AzureRmSubscription –SubscriptionName "Internal Billing" |  Select-AzureRmSubscription

Get-AzureRmResourceGroup | Get-AzureRmSqlServer

#通过Management Portal ,在上海创建新的Server: hfgmi3msar,新的Database: LeiDB
#通过Management Portal,在北京创建新的Server:dbcljcn986,但是不创建新的Database

#执行下面的脚本,在北京创建只读库
$database1 = Get-AzureRmSqlDatabase –DatabaseName "TestDB" –ResourceGroupName "Default-SQL-ChinaEast" –ServerName "hfgmi3msar"

$secondaryLink = $database1 | New-AzureRmSqlDatabaseSecondary –PartnerResourceGroupName "Default-SQL-ChinaNorth" –PartnerServerName "dbcljcn986" -AllowConnections "All"

#Shanghai读写的连接字符串
#hfgmi3msar.database.chinacloudapi.cn,1433

#Beijing只读的连接字符串
#dbcljcn986.database.chinacloudapi.cn,1433

#Failover, 北京Database,变成读写,上海Database只读
#上海Server: hfgmi3msar 只读
$database_beijing = Get-AzureRmSqlDatabase –DatabaseName "TestDB" –ResourceGroupName "Default-SQL-ChinaNorth" –ServerName "dbcljcn986" 

$database_beijing | Set-AzureRmSqlDatabaseSecondary –PartnerResourceGroupName "Default-SQL-ChinaEast" -Failover


#Failover, 上海Database读写,北京Database只读
$database_shanghai = Get-AzureRmSqlDatabase –DatabaseName "TestDB" –ResourceGroupName "Default-SQL-ChinaEast" –ServerName "hfgmi3msar" 

$database_shanghai | Set-AzureRmSqlDatabaseSecondary –PartnerResourceGroupName "Default-SQL-ChinaNorth" -Failover
复制代码

 

 

  上面的PowerShell分为几部分:

  (1)当我们执行以下脚本的时候,会在备份站点Azure北京数据中心,创建只读数据库

#执行下面的脚本,在北京创建只读库
$database1 = Get-AzureRmSqlDatabase –DatabaseName "TestDB" –ResourceGroupName "Default-SQL-ChinaEast" –ServerName "hfgmi3msar"

$secondaryLink = $database1 | New-AzureRmSqlDatabaseSecondary –PartnerResourceGroupName "Default-SQL-ChinaNorth" –PartnerServerName "dbcljcn986" -AllowConnections "All"

  执行结果如下图:

  

 

  (2)当我们执行以下脚本的时候,主站点会变成Azure北京数据中心,备份站点为Azure上海数据中心

#Failover, 北京Database,变成读写,上海Database只读
#上海Server: hfgmi3msar 只读
$database_beijing = Get-AzureRmSqlDatabase –DatabaseName "TestDB" –ResourceGroupName "Default-SQL-ChinaNorth" –ServerName "dbcljcn986" 

$database_beijing | Set-AzureRmSqlDatabaseSecondary –PartnerResourceGroupName "Default-SQL-ChinaEast" -Failover

  执行结果,如下图:

  

 

  (3)当我们再次执行下面的脚本的时候,Azure 上海站点重新变成主站点,Azure北京站点变成备份站点。图略。

#Failover, 上海Database读写,北京Database只读
$database_shanghai = Get-AzureRmSqlDatabase –DatabaseName "TestDB" –ResourceGroupName "Default-SQL-ChinaEast" –ServerName "hfgmi3msar" 

$database_shanghai | Set-AzureRmSqlDatabaseSecondary –PartnerResourceGroupName "Default-SQL-ChinaNorth" -Failover

 

 

 

 

 

  参考资料: https://azure.microsoft.com/en-us/blog/azure-sql-database-standard-geo-replication/

 


本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/5481911.html,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
SQL JavaScript 前端开发
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
【Azure 应用服务】Azure JS Function 异步方法中执行SQL查询后,Callback函数中日志无法输出问题
|
3月前
|
SQL Java 数据库连接
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
|
3月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
3月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
3月前
|
SQL 存储 JSON
【Azure 存储服务】Blob中数据通过Stream Analytics导出到SQL/Cosmos DB
【Azure 存储服务】Blob中数据通过Stream Analytics导出到SQL/Cosmos DB
|
3月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
3月前
|
SQL 数据库 Windows
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
|
6月前
|
存储 边缘计算 安全
阿里云全球基础设施展示,公共云地域、边缘节点、超级数据中心分布图
本文为大家介绍了阿里云在2024年的全球基础设施布局,包括公共云地域、边缘节点、超级数据中心等各个阶段和方面。阿里云基础设施已覆盖全球四大洲,拥有30个公共云地域和89个可用区,以及超过3200个边缘节点,为其用户提供了广泛且深入的服务覆盖。
阿里云全球基础设施展示,公共云地域、边缘节点、超级数据中心分布图
|
SQL Oracle 关系型数据库
SQL 是一种标准
SQL 是一种标准
78 0
|
SQL 存储 数据采集
SQL Server 高可用性(七)复制
复制是一个开发范畴的技术,但是也可以像日志传送一样作为高可用技术的一个后备选项。
121 0
SQL Server 高可用性(七)复制