zoukankan      html  css  js  c++  java
  • SQL Azure (17) SQL Azure V12

      《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/

      

  • 相关阅读:
    hihoCoder 1148 2月29日
    Java 之常用运算符(3)
    Java 之变量和常量(2)
    Codeforces Round #414 A. Bank Robbery
    Codeforces Round #413 B. T-shirt buying
    C++中 set(集合容器)的用法
    Codeforces Round #411 B. 3-palindrome
    Codeforces Round #411 A. Fake NP
    Codeforces Round #413 A. Carrot Cakes
    Codeforces Round #412 B. T-Shirt Hunt
  • 原文地址:https://www.cnblogs.com/threestone/p/5481911.html
Copyright © 2011-2022 走看看