sql Server 数据库中,数据库镜像是用于提高数据库可用性的主要软件解决方案。数据库镜像基于每个数据库实现,并且只适用于使用完整恢复模式的数据库。简单恢复模式和大容量日志恢复模式不支持数据库镜像,数据库镜像不能镜像master、msdb、tempdb 或 model 数据库。本文我们主要就介绍一下数据库镜像的相关知识,接在来就让我们来一起了解一下吧!
数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的sql Server 数据库引擎实例(服务器实例)上。通常,这些服务器实例驻留在不同位置的计算机上。其中一个服务器实例使数据库服务于客户端(“主体服务器”),而另一个服务器实例则充当热备用或备用服务器(“镜像服务器”),具体取决于镜像会话的配置和状态。同步数据库镜像会话时,数据库镜像提供了热备用服务器,可支持在已提交事务不丢失数据的情况下进行快速故障转移。未同步会话时,镜像服务器通常用作备用服务器(可能造成数据丢失)。
数据库镜像的优点
数据库镜像是一种简单的策略,具有下列优点:
增强数据保护功能。
数据库镜像提供完整或接近完整的数据冗余,具体取决于运行模式是高安全性模式还是高性能模式。有关详细信息,请参阅本主题后面的“运行模式”。
提高数据库的可用性。
发生灾难时,在具有自动故障转移功能的高安全性模式下,自动故障转移可快速使数据库的备用副本在线(而不会丢失数据)。在其他运行模式下,数据库管理员可以选择强制服务(可能丢失数据),以替代数据库的备用副本。有关详细信息,请参阅本主题后面的“角色切换”。
若要使镜像数据库的停机时间减至最小,可以按顺序升级要参加数据库镜像会话的 sql Server 实例,从而使停机时间仅为一次故障转移的时间。这种形式的升级称为“滚动升级”。
数据库镜像工作方式
在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。两个伙伴在会话中扮演互补的角色:“主体角色”和“镜像角色”。在任何给定的时间,都是一个伙伴扮演主体角色,另一个伙伴扮演镜像角色。每个伙伴拥有其当前角色。拥有主体角色的伙伴称为“主体服务器”,其数据库副本为当前的主体数据库。拥有镜像角色的伙伴称为“镜像服务器”,其数据库副本为当前的镜像数据库。如果数据库镜像部署在生产环境中,则主体数据库即为生产数据库。
数据库镜像涉及尽快将对主体数据库执行的每项插入、更新和删除操作重做到镜像数据库中。重做通过将每个活动事务日志记录发送到镜像服务器来完成,这会尽快将日志记录按顺序应用到镜像数据库中。与逻辑级别执行的复制不同,数据库镜像在物理日志记录级别执行。
运行模式
数据库镜像会话以同步操作或异步操作运行。在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。在同步操作下,已提交的事务将在伙伴双方上提交,但会延长事务滞后时间。
有两种镜像运行模式。一种是“高安全性模式”,它支持同步操作。在高安全性模式下,当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步。在同步数据库之后,已提交的事务将在伙伴双方上提交,但会延长事务滞后时间。
第二种运行模式,即“高性能模式”,异步运行。镜像服务器尝试与主体服务器发送的日志记录保持同步。虽然镜像数据库可能稍微滞后于主体数据库,但这两个数据库之间的时间间隔通常很小。但是,如果主体服务器的工作负荷过高或镜像服务器系统的负荷过高,则时间间隔会增大。
在高性能模式中,主体服务器向镜像服务器发送日志记录之后会立即再向客户端发送确认一条消息,而不需要等待镜像服务器的确认。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交。此异步操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。
所有数据库镜像会话都只支持一台主体服务器和一台镜像服务器。下图阐释了这种配置。
具有自动故障转移功能的高安全性模式要求使用第三个服务器实例,称为“见证服务器”。与这两个伙伴不同的是,见证服务器并不能用于数据库。见证服务器通过验证主体服务器是否已启用并运行来仅支持自动故障转移。只有在镜像服务器和见证服务器与主体服务器断开连接之后而保持相互连接时,镜像服务器才启动自动故障转移。
下图显示了包含见证服务器的配置。
事务安全与运行模式
运行模式是异步还是同步取决于事务安全设置。如果专门使用 sql Server Management Studio 来配置数据库镜像,则在您选择运行模式时,将自动配置事务安全设置。
如果使用 Transact-sql 配置数据库镜像,则需要了解如何设置事务安全。事务安全由 ALTER DATABASE 语句的 SAFETY 属性控制。在正在镜像的数据库中,SAFETY 为 FULL 或 OFF。
如果将 SAFETY 选项设置为 FULL,则在初始同步阶段后,数据库镜像操作将同步执行。如果在高安全性模式下设置见证服务器,则会话支持自动故障转移。
如果将 SAFETY 选项设置为 OFF,则数据库镜像操作将异步执行。会话在高性能模式下运行,并且 WITNESS 选项也应设置为 OFF。
角色切换
在数据库镜像会话上下文中,通常可以使用一个称为“角色切换”的过程来互换主体角色和镜像角色。角色切换涉及将主体角色转换给镜像服务器的操作。在角色切换中,镜像服务器充当主体服务器的“故障转移伙伴”。进行角色切换时,镜像服务器将接管主体角色,并使其数据库的副本在线以作为新的主体数据库。以前的主体服务器(如果有)将充当镜像角色,并且其数据库将变为新的镜像数据库。这些角色可以反复地来回切换。
存在以下三种角色切换形式:
自动故障转移
这要求使用高安全性模式并具有镜像服务器和见证服务器。数据库必须已同步,并且见证服务器必须连接到镜像服务器。
见证服务器的作用是验证给定的伙伴服务器是否已启动并运行。如果镜像服务器与主体服务器断开连接,但见证服务器仍与主体服务器保持连接,则镜像服务器无法启动故障转移。
手动故障转移
这要求使用高安全性模式。伙伴双方必须互相连接,并且数据库必须已同步。
强制服务(可能造成数据丢失)
在高性能模式和不带自动故障转移功能的高安全性模式下,如果主体服务器出现故障而镜像服务器可用,则可以强制服务运行。
重要提示:
高性能模式用于在没有见证服务器的情况下运行。但如果存在见证服务器,则强制服务将要求见证服务器连接到镜像服务器。
在任一种角色切换情况下,一旦新的主体数据库在线,客户端应用程序便会通过重新连接到数据库来快速恢复。
数据库镜像支持
数据库镜像伙伴和见证服务器受到 sql Server 2005 Standard Edition SP1 和更高版本支持,还受到 sql Server 2005 Enterprise Edition SP1 和更高版本支持。前提是各伙伴都必须使用相同的版本,只有 sql Server 2005 Enterprise Edition SP1 及更高版本支持异步数据库镜像(高性能模式)。见证服务器还受到 sql Server 2005 Workgroup Edition SP1 和更高版本以及 sql Server 2005 Express Edition SP1 和更高版本支持。
原文链接:https://www.f2er.com/mssql/66220.html