分类: 数据库开发技术
2009-09-26 21:39:26
QL Server 2008 联机丛书(2009 年 7 月)
SQL 2008 高可用——数据库镜像概述
“数据库镜像”是用于提高数据库可用性的主要软件解决方案。镜像基于每个数据库实现,并且只适用于使用完整恢复模式的数据库。简单恢复模式和大容量日志恢复模式不支持数据库镜像。因此,所有大容量操作始终被完整地记入日志。数据库镜像可使用任意支持的数据库兼容级别。
|
不能镜像 master、msdb、tempdb 或 model 数据库。 |
数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎 服务器实例上。通常,这些服务器实例驻留在不同位置的计算机上。其中一个服务器实例使数据库服务于客户端(“主体服务器”),另一个服务器实例则根据镜像会话的配置和状态,充当热备用或温备用服务器(“镜像服务器”)。同步数据库镜像会话时,数据库镜像提供热备用服务器,可支持在已提交事务不丢失数据的情况下进行快速故障转移。未同步会话时,镜像服务器通常用作备用服务器(可能造成数据丢失)。
数据库镜像是一种简单的策略,具有下列优点:
在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。两个伙伴在会话中扮演互补的角色:“主体角色”和“镜像角色”。在任何给定的时间,都是一个伙伴扮演主体角色,另一个伙伴扮演镜像角色。每个伙伴拥有其当前角色。拥有主体角色的伙伴称为“主体服务器”,其数据库副本为当前的主体数据库。拥有镜像角色的伙伴称为“镜像服务器”,其数据库副本为当前的镜像数据库。如果数据库镜像部署在生产环境中,则主体数据库即为“生产数据库”。
数据库镜像涉及尽快将对主体数据库执行的每项插入、更新和删除操作“重做”到镜像数据库中。重做通过将活动事务日志记录的流发送到镜像服务器来完成,这会尽快将日志记录按顺序应用到镜像数据库中。与逻辑级别执行的复制不同,数据库镜像在物理日志记录级别执行。从 SQL Server 2008 开始,在事务日志记录的流发送到镜像服务器之前,主体服务器会先将其压缩。在所有镜像会话中都会进行这种日志压缩。
运行模式
数据库镜像会话以同步操作或异步操作运行。在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。在同步操作下,事务将在伙伴双方处提交,但会延长事务滞后时间。
有两种镜像运行模式。一种是“高安全性模式”,它支持同步操作。在高安全性模式下,当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步。一旦同步了数据库,事务将在伙伴双方处提交,这会延长事务滞后时间。
第二种运行模式,即“高性能模式”,异步运行。镜像服务器尝试与主体服务器发送的日志记录保持同步。镜像数据库可能稍微滞后于主体数据库。但是,数据库之间的时间间隔通常很小。但是,如果主体服务器的工作负荷过高或镜像服务器系统的负荷过高,则时间间隔会增大。
在高性能模式中,主体服务器向镜像服务器发送日志记录之后,会立即再向客户端发送一条确认消息。它不会等待镜像服务器的确认。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交。此异步操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。
所有数据库镜像会话都只支持一台主体服务器和一台镜像服务器。下图显示了该配置。
具有自动故障转移功能的高安全性模式要求使用第三个服务器实例,称为“见证服务器”。与这两个伙伴不同的是,见证服务器并不能用于数据库。见证服务器通过验证主体服务器是否已启用并运行来支持自动故障转移。只有在镜像服务器和见证服务器与主体服务器断开连接之后而保持相互连接时,镜像服务器才启动自动故障转移。
下图显示了包含见证服务器的配置。
有关详细信息,请参阅本主题后面的“角色切换”。
|
建立新的镜像会话需要所有涉及的服务器实例运行同一版本的 SQL Server。但是,当升级到 SQL Server 2008 时,所涉及的实例的版本可能会不同。有关详细信息,请参阅。 |
事务安全与运行模式
运行模式是异步还是同步取决于事务安全设置。如果专门使用 SQL Server Management Studio 来配置数据库镜像,则在您选择运行模式时,将自动配置事务安全设置。
如果使用 Transact-SQL 配置数据库镜像,则必须了解如何设置事务安全。事务安全由 ALTER DATABASE 语句的 SAFETY 属性控制。在正在镜像的数据库中,SAFETY 为 FULL 或 OFF。
有关详细信息,请参阅 。
角色切换
在数据库镜像会话上下文中,通常可以使用一个称为“角色切换”的过程来互换主体角色和镜像角色。角色切换涉及将主体角色转换给镜像服务器的操作。在角色切换中,镜像服务器充当主体服务器的“故障转移伙伴”。进行角色切换时,镜像服务器将接管主体角色,并使其数据库的副本联机以作为新的主体数据库。以前的主体服务器(如果有)将充当镜像角色,并且其数据库将变为新的镜像数据库。这些角色可以反复地来回切换。
存在以下三种角色切换形式。
|
高性能模式用于在没有见证服务器的情况下运行。但如果存在见证服务器,则强制服务将要求见证服务器连接到镜像服务器。 |
在任何一种角色切换情况下,一旦新的主体数据库联机,客户端应用程序便会通过重新连接到数据库来快速恢复。
数据库镜像可以与 SQL Server 的下列功能或组件一起使用。
自 SQL Server 2005 Service Pack 1 (SP1) 起,SQL Server Standard 和 SQL Server Enterprise 已经开始支持数据库镜像伙伴和见证服务器了。但是,各伙伴都必须使用相同的版本,只有 SQL Server Enterprise 支持异步数据库镜像(高性能模式)。SQL Server Workgroup 和 SQL Server Express 也支持见证服务器。