聚焦 SQL 数据库活动异地复制
Tobias
Ternstrom US-DS-PM 首席部门项目经理
本文作为一系列业务连续性和灾难恢复文章的开篇,概述了业务连续性的各种场景,然后重点介绍 SQL 数据库高级服务级别提供的活动异地复制的用法。有关活动异地复制的详细信息,请观看生动而详实的Channel 9视频。在该视频中,Sasha Nosov 和 Scott
Klein 将探讨活动异地复制的工作原理,以及如何使用它来解决实际的业务问题。
什么是业务连续性?
业务连续性是指可以帮助企业在发生系统中断(尤其是计算基础结构发生中断)时保持持续运营的机制、策略和过程。
从数据库角度来看,可能存在四种主要的中断场景:
- 影响数据库节点的本地硬件或软件发生故障,例如,磁盘驱动器发生故障。
- 数据损坏或删除 – 通常是由于应用程序缺陷或人为错误造成的。这种故障本身与特定应用程序有关,一般无法由基础结构自动检测或解决。
- 数据中心中断,可能是由自然灾害造成的。这种场景要求具备一定程度的地域冗余,可以将应用程序故障转移到备用数据中心。
- 升级或维护错误 – 在按计划对应用程序或数据库进行升级或维护期间发生的意外问题,可能需要快速回滚到原先的数据库状态。
Azure SQL 数据库如何启用业务连续性?
Azure SQL 数据库会自上而下构建为一种稳定可靠的高可用性数据库服务,它采用这样一种机制,即始终为每个数据库保留三个或三个以上的副本,并会在响应前至少对两个副本进行更新。这种高可用性(HA)系统解决了第一种场景的问题,即本地硬件和软件故障。
当前的新服务级别(基本、标准和高级级别)提供了一些功能,以解决上述其余三种场景的问题,从而使业务连续性迈上了一个新台阶:
数据损坏或删除。基本、标准和高级级别数据库支持自助式时间点还原功能,可以将数据库还原为早先的状态。这样,就可以防止因应用程序或用户错误而导致数据损坏或被删除。每周会进行一次完整备份,每天会进行一次差异备份,每 5 分钟会进行一次事务日志备份。对于基本级别数据库,备份会保留 7 天,对于标准级别数据库,备份会保留 14 天,对于高级级别数据库,备份会保留 35 天。您可以在保留期内将数据库(包括最近删除的数据库)还原到任意时间点。
数据中心中断。此外,还会保护基本、标准和高级数据库服务级别不出现长时间数据中心中断,因为这可能需要将数据库恢复到其他区域的其他数据中心内。我们为此提供了三种地域冗余解决方案:
- 地域还原(适用于基本,标准和高级级别),可用于恢复到上次每日备份的地域冗余副本。
- 标准异地复制(适用于标准和高级级别数据库),可用于扩展本地 HA 系统,以便在配对区域创建和维护另一个辅助数据库。这些辅助数据库处于脱机和不可访问状态,除非发生数据中心中断,此时,它们将被置于联机状态,以使应用程序可以故障转移到其中。
- 活动异地复制(适用于高级级别数据库),可提供最丰富的解决方案,数据丢失风险最低,恢复时间最短。它可将标准异地复制扩展为多达 4 个异地复制的辅助数据库,这些数据库会始终保持联机和可读状态,同时,也可用于平衡负载,或者在从全球任何地点访问复制的数据时可以保证延迟较低。
升级或维护错误。通过活动异地复制,您可以为数据库创建一份连续复制的副本,在对该数据库或应用程序进行更新或维护之前,可以立即冻结该数据库。如果在该过程期间或之后检测到任何错误,则可以轻松快捷地将该数据库回滚至该副本。
不同的服务级别可使用不同的解决方案,但是请记住,您可以轻松地在各个服务级别之间升级或降级数据库。例如,您可能选择在进行重要升级之前先将标准级数据库升级为高级,并使用活动异地复制。升级完成后,可以将该数据库重新降级,以降低成本。
活动异地复制详细信息
至此,我们已经了解了在业务连续性环境下,何时可以使用活动异地复制。现在,让我们深入探讨一下活动异地复制的工作原理以及使用方式。

图 1. 高级数据库在相同或不同区域中最多可以拥有 4 个可读辅助数据库。
活动异地复制关系可以通过 Azure 管理门户、PowerShell 或 REST API 来创建和管理。在该门户中,您可以从主数据库或辅助数据库管理复制关系。您可以从主数据库监视每个辅助数据库的复制状态。

图 2. 使用 Azure 管理门户创建和监视多达四个地域辅助数据库的状态。
可以创建多达四个可读辅助数据库,每个辅助数据库都与主数据库同名,但位于不同的服务器上。辅助数据库在首次创建后会使用主数据库的当前状态来初始化。每个辅助数据库在初始化完成后,即会成为主数据库的一个连续副本。与所有其他数据库一样,辅助数据库也会通过常规 HA 系统在本地进行保护。
与本地 HA 复制模式不同的是,从主数据库异地复制到辅助数据库是异步的。对主数据库应用的事务会复制并应用到辅助数据库,而在等待该操作期间,主数据库仍可继续处理事务。所做的更改会被缓存下来,确保复制系统在复制到远程位置期间发生临时连接问题或长时间延迟时能够恢复。
为了确保对辅助数据库应用的事务不会对主数据库构成瓶颈,辅助数据库必须具有与主数据库相同或更高的性能级别。
辅助数据库是可读的,因此,可以支持独立的只读工作负荷。可以通过该功能在多个数据库之间平衡复杂的查询工作负荷,或者在全球其他地点提供较短的应用程序数据访问延迟。

图 3.如果数据中心中断影响到主数据库,可以终止复制关系,并将应用程序故障转移到辅助数据库。
可以手动管理复制关系,以便可以随时终止该关系。如果从主数据库终止复制关系,您可以选择是立即终止并丢失任何待处理的事务还是在应用所有待处理的事务后再终止。
如果发生数据中心中断并影响到主数据库,仍然可以手动执行故障转移,这样,您就可以完全控制是否执行该操作以及何时执行。如果主数据库不可用,可以从辅助数据库终止该关系。从数据库始终会立即终止该关系,并丢失主数据库变为不可用时尚未复制的任何事务。可能丢失多少数据取决于主数据库发生故障时的活动状态,以及是否在连接期间缓存了事务。是否要决定终止复制关系,应综合考虑可能的数据丢失问题以及是否希望重新恢复应用程序。
一旦终止了与辅助数据库的关系,该数据库就会成为一个普通的读写数据库。此时,您可以将对该数据库具有完全访问权限的应用程序进行故障转移。由于每个辅助数据库都是一个独立的数据库,并与主数据库同名,但位于不同的服务器上,因此,您需要使用更新后的连接字符串重新配置应用程序。
在处理完故障转移过程后,您可能希望仅使用新的生产数据库作为主数据库来重新构建与以前使用的异地复制关系相同的异地复制关系模式。这样就可以确保您获得应用程序和业务连续性策略所需的地域冗余和负载平衡功能。

图 4. 终止最初与辅助数据库建立的关系后,应创建新的异地复制关系,以保护新的主数据库并满足任何负载平衡需求。
活动异地复制可以整合到各种应用程序体系结构模式中,这些模式会采用不同的假设,例如,哪些层和组件风险最高,以及哪些组件可能分布在不同的地理区域。有关该主题的详细信息,请参见此文章。
总结
活动异地复制不仅提供了强大的地域冗余功能以保护数据库不受数据中心中断的影响,而且还支持其他业务连续性场景。对于高级级别数据库,目前已提供了活动异地复制功能。
请阅读有关 SQL 数据库中业务连续性(包括活动异地复制)的更多信息,或者花几分钟时间观看
Sasha 和 Scott 在Channel 9 上针对活动异地复制如何为业务提供保护展开的讨论。
本文翻译自:http://azure.microsoft.com/blog/2014/07/12/spotlight-on-sql-database-active-geo-replication/
聚焦 SQL 数据库活动异地复制的更多相关文章
- Azure SQL 数据库:新服务级别问答
ShawnBice 2014 年 5 月 1 日上午 11:10 本月初,我们庆祝了SQL Server 2014 的推出,并宣布正式发布分析平台系统,同时分享了智能系统服务预览版.Quentin ...
- Azure SQL 数据库新服务级别现已正式发布
T.K.Ranga Rengarajan 2014 年 9 月 10 日上午 11:00 我们很高兴地宣布,新的 SQL 数据库服务级被基本.标准和高级级别现已正式发布.这些服务级别中含有内置且可 ...
- Azure SQL 数据库:服务级别与性能问答
ShawnBice 2014 年 5 月 5 日上午 10:00 几天前,我发表了一篇文章,并就 4 月 24 日发布的适用于Windows Azure SQL 数据库的新服务级别提供了一些预料 ...
- SQL SERVER 数据库表同步复制 笔记
SQL SERVER 数据库表同步复制 笔记 同步复制可运行在不同版本的SQL Server服务之间 环境模拟需要两台数据库192.168.1.1(发布),192.168.1.10(订阅) 1.在发布 ...
- 【SQL server 2012】复制数据库到另一台机器上
当需要将一台机器(源机器)上的一个数据库完全复制到另一台机器(目标机器)上时,可以选择先在源机器上备份该数据库,然后在目标机器上还原该备份的方法. 下面详细描述具体步骤: 1. 打开SQL serve ...
- sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决
问题描述:在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到Excel里面,却发生了行列错位问题,而导致Excel里面的行数 ...
- SQL数据库异地备份
服务器:windows sever 2008(简称为A) 数据库:SQL server 2008 R2(安装在A上) 普通台式机:windows 7(简称为B) 目的:将A中的数据定时自动备份到B中 ...
- Azure SQL 数据库最新版本现已提供预览版
Tiffany Wissner 数据平台营销高级总监 我们之前在11月宣布将提供新的预览版,在该预览版中我们引入了接近完整的 SQL Server 引擎兼容性和更为高级的性能,这些都代表了下一代的 ...
- SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)
原文:SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库) 场景 公司最近的sharepoint的数据库服务器老是出问题,并且在一旦出现问题,就导致无法正 ...
随机推荐
- 数字PID控制算法
增量式PID控制算法 量式PID控制算法 2009-07-18 10:33 (转载 出处blog.ednchina.com/tengjingshu )blog.ednchina.com/tengjin ...
- 【BZOJ】【1770】【Usaco2009 Nov】lights 灯
高斯消元解XOR方程组 一眼看上去是高斯消元解xor方程组……但是不会写……sad 去膜拜了Hzwer和ZYF Hzwer啥也没说,还是zyf靠谱…… 当多解的时候就需要爆搜枚举自由元的情况,找最优解 ...
- nenu contest2
http://vjudge.net/vjudge/contest/view.action?cid=54562#overview H B. Polygons http://codeforces.com ...
- 翻译:用Javascript的Function构造器伪造上下文 by Ben Nadel
在我的jQuery模板标记语言(JTML)项目中,我需要一种方式将JTML模板编译到JS函数,这样它们就可以如期地在任何时候转换成新的HTML标记.但这是一个严峻的问题,因为JTML代码涉及非作用域( ...
- Unity3D脚本中文系列教程(十一)
http://dong2008hong.blog.163.com/blog/static/4696882720140313058768/ BoxCollider 类,继承自Collider 一个盒状的 ...
- 总结:Unity3D游戏上线后的流程回顾
原地址:http://unity3d.9tech.cn/news/2014/0127/39748.html 首先.unity 灯光烘焙 :Unity 3d FBX模型导入.选项Model 不导入资源球 ...
- 由CHAR(2)引发的BUG
我们在设计数据库标志位字段时,为考虑其扩展性,一般会设置为CHAR(2),例如 FLAG CHAR(2),这样我们就需要注意了,如果你给字段 FLAG赋值为‘0’,它在数据库中的真实情况是‘0+空格’ ...
- 深入浅出Java并发包—指令重排序
前面大致提到了JDK中的一些个原子类,也提到原子类是并发的基础,更提到所谓的线程安全,其实这些类或者并发包中的这么一些类,都是为了保证系统在运行时是线程安全的,那到底怎么样才算是线程安全呢? Java ...
- Floodlight 防火墙是如何起作用的
前言 用mininet + floodlight搭建好环境之后,运行flooglight,然后在mininet中建立网络拓扑,建好之后,pingall,所有host之间可以ping通. 然后向控制器f ...
- 李洪强iOS开发之零基础学习iOS开发【02-C语言】03-关键字、标识符、注释
上一讲中已经创建了第一个C语言程序,知道了C程序是由函数构成的,这讲继续学习C语言的一些基本语法.C语言属于一门高级语言,其实,所有的高级语言的基本语法组成部分都是一样的,只是表现形式不太一样.就好像 ...