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

  

SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-Replication)的更多相关文章

  1. Azure SQL Database (24) 使用新管理界面,创建跨数据中心标准地域复制(Standard Geo-Replication)

    <Windows Azure Platform 系列文章目录> 文本是对:SQL Azure (17) SQL Azure V12 - 跨数据中心标准地域复制(Standard Geo-R ...

  2. Windows Azure Virtual Network (13) 跨数据中心之间的虚拟网络点对点连接VNet Peering

    <Windows Azure Platform 系列文章目录> 今天是大年初二,首先祝大家新年快乐,万事如意. 在笔者之前的文章中:Windows Azure Virtual Networ ...

  3. MySQL金融应用场景下跨数据中心的MGR架构方案(1)

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 0. 内容提纲 运行环境 部署MGR A&B 部署MGR A.B之间的复制通道 几个注意事项 如何在多个数据中心部 ...

  4. Uber如何搭建一个基于Kafka的跨数据中心复制平台 原创: 徐宏亮 AI前线 今天

    Uber如何搭建一个基于Kafka的跨数据中心复制平台 原创: 徐宏亮 AI前线 今天

  5. Cassandra 如何处理跨数据中心的数据库延时问题

    分布式系统的可靠.延时.一致性等问题是一般性问题,不局限于数据库,而Cassandra提供了一个很好的解决思路. Cassandra号称能做到跨数据中心的数据库访问的高效访问,它的实现方式其实是把延时 ...

  6. 原生Redis跨数据中心双向同步优化实践

    一.背景 公司基于业务发展以及战略部署,需要实现在多个数据中心单元化部署,一方面可以实现多数据中心容灾,另外可以提升用户请求访问速度.需要保证多数据中心容灾或者实现用户就近访问的话,需要各个数据中心拥 ...

  7. MySQL金融应用场景下跨数据中心的MGR架构方案(2)

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 如何在多个数据中心部署多套MGR集群,并实现故障快速切换. 上篇文章介绍了如何在多数据中心部署多套MGR集群,并构建集群间 ...

  8. 怎样打造一个分布式数据库——rocksDB, raft, mvcc,本质上是为了解决跨数据中心的复制

    摘自:http://www.infoq.com/cn/articles/how-to-build-a-distributed-database?utm_campaign=rightbar_v2& ...

  9. Windows Azure HandBook (2) Azure China提供的服务

    <Windows Azure Platform 系列文章目录> 对于传统的自建数据中心,从底层的Network,Storage,Servers,Virtualization,中间层的OS, ...

随机推荐

  1. Python-面向对象

    面向过程变成:函数式变成,C程序等 面向对象编程:C++,Java,Python等   类和对象: 类:是对事物的抽象,比如人类.球类 对象:是类的一个实例,比如足球.篮球   实例说明: 球类可以对 ...

  2. Bootstrap UI 编辑器

    1. BootSwatchr BootSwatchr 是由 Drew Strickiand 独立开发和维护的,是唯一支持从右到左语言显示的 Bootstrap 自定义构建工具,这也是它的特色之一.Bo ...

  3. java接口

    一.定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为( ...

  4. 实时控制软件设计作业_01——汽车ABS系统分析

    制动防抱死系统(antilock brake system)简称ABS.作用就是在汽车制动时,自动控制制动器制动力的大小,使车轮不被抱死,处于边滚边滑(滑移率在20%左右)的状态,以保证车轮与地面的附 ...

  5. 【vuejs小项目——vuejs2.0版本】单页面搭建

    http://router.vuejs.org/zh-cn/essentials/nested-routes.html 使用嵌套路由开发,这里会出错主要把Vue.use(VueRouter);要进行引 ...

  6. python学习 1基础

    对象的等于只是对于值而言 函数定义没有变量提升 常用对象 list []: 列表, 排序省空间 tuple (): 元组,一旦初始化不可修改 dict {}: 字典,方便查询 set {}:集合, 值 ...

  7. Node使用multiparty包上传文件

    var multiparty = require('multiparty'); var http = require('http'); var util = require('util'); var ...

  8. 闲来无事,写个基于UDP协议的Socket通讯Demo

    项目一期已经做完,二期需求还没定稿,所以最近比较闲. 上一篇写的是TCP协议,今天写一下UDP协议.TCP是有连接协议,所以发送和接收消息前客户端和服务端需要建立连接:UDP是无连接协议,所以发送消息 ...

  9. Codeforces 486E LIS of Sequence 题解

    题目大意: 一个序列,问其中每一个元素是否为所有最长上升子序列中的元素或是几个但不是所有最长上升子序列中的元素或一个最长上升子序列都不是. 思路: 求以每一个元素为开头和结尾的最长上升子序列长度,若两 ...

  10. 2_MVC+EF+Autofac(dbfirst)轻型项目框架_用户权限验证

    前言 接上面两篇 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架 与 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例) .在第一篇中介 ...