Sqlserver 2005 配置 数据库镜像:概述
数据库镜像概述
“数据库镜像”是用于提高数据库可用性的主要软件解决方案。镜像基于每个数据库实现,并且只适用于使用完整恢复模式的数据库。简单恢复模式和大容量日志恢复模式不支持数据库镜像。因此,所有大容量操作始终被完整地记入日志。数据库镜像可使用任意支持的数据库兼容级别。
不能镜像 master、msdb、tempdb 或 model 数据库。 |
数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎实例(服务器实例)上。通常,这些服务器实例驻留在不同位置的计算机上。其中一个服务器实例使数据库服务于客户端(“主体服务器”),而另一个服务器实例则充当热备用或备用服务器(“镜像服务器”),具体取决于镜像会话的配置和状态。同步数据库镜像会话时,数据库镜像提供了热备用服务器,可支持在已提交事务不丢失数据的情况下进行快速故障转移。未同步会话时,镜像服务器通常用作备用服务器(可能造成数据丢失)。
数据库镜像是一种简单的策略,具有下列优点:
- 增强数据保护功能。
数据库镜像提供完整或接近完整的数据冗余,具体取决于运行模式是高安全性模式还是高性能模式。有关详细信息,请参阅本主题后面的“运行模式”。 - 提高数据库的可用性。
发生灾难时,在具有自动故障转移功能的高安全性模式下,自动故障转移可快速使数据库的备用副本在线(而不会丢失数据)。在其他运行模式下,数据库管理员可以选择强制服务(可能丢失数据),以替代数据库的备用副本。有关详细信息,请参阅本主题后面的“角色切换”。 - 提高生产数据库在升级期间的可用性。
若要使镜像数据库的停机时间减至最小,可以按顺序升级要参加数据库镜像会话的 SQL Server 实例,从而使停机时间仅为一次故障转移的时间。这种形式的升级称为“滚动升级”。有关详细信息,请参阅如何以最小的镜像数据库停机时间在系统上安装 Service Pack。
在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。两个伙伴在会话中扮演互补的角色:“主体角色”和“镜像角色”。在任何给定的时间,都是一个伙伴扮演主体角色,另一个伙伴扮演镜像角色。每个伙伴拥有其当前角色。拥有主体角色的伙伴称为“主体服务器”,其数据库副本为当前的主体数据库。拥有镜像角色的伙伴称为“镜像服务器”,其数据库副本为当前的镜像数据库。如果数据库镜像部署在生产环境中,则主体数据库即为生产数据库。
数据库镜像涉及尽快将对主体数据库执行的每项插入、更新和删除操作重做到镜像数据库中。重做通过将每个活动事务日志记录发送到镜像服务器来完成,这会尽快将日志记录按顺序应用到镜像数据库中。与逻辑级别执行的复制不同,数据库镜像在物理日志记录级别执行。
运行模式
数据库镜像会话以同步操作或异步操作运行。在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。在同步操作下,已提交的事务将在伙伴双方上提交,但会延长事务滞后时间。
有两种镜像运行模式。一种是“高安全性模式”,它支持同步操作。在高安全性模式下,当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步。在同步数据库之后,已提交的事务将在伙伴双方上提交,但会延长事务滞后时间。
第二种运行模式,即“高性能模式”,异步运行。镜像服务器尝试与主体服务器发送的日志记录保持同步。虽然镜像数据库可能稍微滞后于主体数据库,但这两个数据库之间的时间间隔通常很小。但是,如果主体服务器的工作负荷过高或镜像服务器系统的负荷过高,则时间间隔会增大。
在高性能模式中,主体服务器向镜像服务器发送日志记录之后会立即再向客户端发送确认一条消息,而不需要等待镜像服务器的确认。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交。此异步操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。
所有数据库镜像会话都只支持一台主体服务器和一台镜像服务器。下图阐释了这种配置。

具有自动故障转移功能的高安全性模式要求使用第三个服务器实例,称为“见证服务器”。与这两个伙伴不同的是,见证服务器并不能用于数据库。见证服务器通过验证主体服务器是否已启用并运行来仅支持自动故障转移。只有在镜像服务器和见证服务器与主体服务器断开连接之后而保持相互连接时,镜像服务器才启动自动故障转移。
下图显示了包含见证服务器的配置。

有关详细信息,请参阅本主题后面的“角色切换”。
事务安全与运行模式
运行模式是异步还是同步取决于事务安全设置。如果专门使用 SQL Server Management Studio 来配置数据库镜像,则在您选择运行模式时,将自动配置事务安全设置。
如果使用 Transact-SQL 配置数据库镜像,则需要了解如何设置事务安全。事务安全由 ALTER DATABASE 语句的 SAFETY 属性控制。在正在镜像的数据库中,SAFETY 为 FULL 或 OFF。
- 如果将 SAFETY 选项设置为 FULL,则在初始同步阶段后,数据库镜像操作将同步执行。如果在高安全性模式下设置见证服务器,则会话支持自动故障转移。
- 如果将 SAFETY 选项设置为 OFF,则数据库镜像操作将异步执行。会话在高性能模式下运行,并且 WITNESS 选项也应设置为 OFF。
有关详细信息,请参阅 Transact-SQL 设置和数据库镜像运行模式。
角色切换
在数据库镜像会话上下文中,通常可以使用一个称为“角色切换”的过程来互换主体角色和镜像角色。角色切换涉及将主体角色转换给镜像服务器的操作。在角色切换中,镜像服务器充当主体服务器的“故障转移伙伴”。进行角色切换时,镜像服务器将接管主体角色,并使其数据库的副本在线以作为新的主体数据库。以前的主体服务器(如果有)将充当镜像角色,并且其数据库将变为新的镜像数据库。这些角色可以反复地来回切换。
存在以下三种角色切换形式:
- 自动故障转移
这要求使用高安全性模式并具有镜像服务器和见证服务器。数据库必须已同步,并且见证服务器必须连接到镜像服务器。
见证服务器的作用是验证给定的伙伴服务器是否已启动并运行。如果镜像服务器与主体服务器断开连接,但见证服务器仍与主体服务器保持连接,则镜像服务器无法启动故障转移。有关详细信息,请参阅数据库镜像见证服务器。 - 手动故障转移
这要求使用高安全性模式。伙伴双方必须互相连接,并且数据库必须已同步。 - 强制服务(可能造成数据丢失)
在高性能模式和不带自动故障转移功能的高安全性模式下,如果主体服务器出现故障而镜像服务器可用,则可以强制服务运行。
高性能模式用于在没有见证服务器的情况下运行。但如果存在见证服务器,则强制服务将要求见证服务器连接到镜像服务器。
在任一种角色切换情况下,一旦新的主体数据库在线,客户端应用程序便会通过重新连接到数据库来快速恢复。
数据库镜像的前提条件和建议
本主题说明了设置数据库镜像的必备条件和建议。有关数据库镜像的介绍,请参阅数据库镜像概述。
在 64 位和 32 位环境中,SQL Server 磁盘存储格式均相同。因此,数据库镜像会话可以将在 32 位环境中运行的服务器实例和在 64 位环境中运行的服务器实例组合在一起。 |
在 32 位系统上,由于受每个数据库镜像会话所占用的工作线程数限制,对于每个服务器实例,数据库镜像最多支持 10 个数据库。
跨数据库事务和分布式事务均不支持数据库镜像。有关详细信息,请参阅数据库镜像和跨数据库事务。
在设置数据库镜像之前,必须执行以下步骤:
- 确保两个伙伴(主体服务器和镜像服务器)运行相同版本的 Microsoft SQL Server 2005。两个伙伴需要运行 SQL Server 2005 Standard Edition 或 SQL Server 2005 Enterprise Edition。
- 如果使用见证服务器,则确保在其系统上安装 SQL Server 2005。见证服务器可以在支持 SQL Server 2005 Standard Edition、Enterprise Edition、Workgroup Edition 或 Express Edition 的任何可靠计算机系统中运行。
- 验证镜像服务器能为镜像数据库提供足够的磁盘空间。
有关如何对复制数据库使用数据库镜像的信息,请参阅复制和数据库镜像。 - 在镜像服务器上创建镜像数据库时,请确保指定相同数据库名称 WITH NORECOVERY 来还原主体数据库备份。另外,还必须通过 WITH NORECOVERY 应用在该备份执行后创建的所有日志备份。
如果数据库镜像已经停止,则必须将对主体数据库执行的所有后续日志备份应用到镜像数据库中,然后才可以重新启动镜像。 - 数据库镜像可使用任意支持的数据库兼容级别。有关支持的兼容级别的信息,请参阅 sp_dbcmptlevel (Transact-SQL)。
- 应该在可以处理相同工作负荷的类似系统上运行伙伴。
如果计划使用具有自动故障转移功能的高安全性模式,则每个故障转移伙伴上的正常加载应使用小于 50% 的 CPU。如果工作负荷超过 CPU 负荷,则故障转移伙伴可能无法 ping 镜像会话中的其他服务器实例,从而导致不必要的故障转移。如果无法保持 CPU 使用率始终在 50% 以下,则建议使用不带自动故障转移功能的高安全性模式或使用高性能模式。 - 如有可能,镜像数据库的路径(包括驱动器号)应该与主体数据库的路径相同。如果文件布局必须互不相同(例如,如果主体数据库位于“F:”驱动器上,但镜像系统没有“F:”驱动器),则必须在 RESTORE 语句中加入 MOVE 选项。
如果创建镜像数据库时移动了数据库文件,则不挂起镜像可能导致以后无法向数据库添加文件。 - 镜像会话中的所有服务器实例都应该使用相同的主代码页和排序规则。如果使用不同的主代码页和排序规则,则在镜像设置期间可能会出现问题。
- (可选)估计故障转移数据库的时间,以确保系统配置能提供您需要的性能。有关详细信息,请参阅估计角色切换过程中的服务中断。
- 为获得最佳性能,请为镜像使用专用网络接口卡 (NIC)。
- 关于广域网 (WAN) 对高安全性模式下的数据库镜像是否足够可靠,我们没有任何建议。如果您决定在 WAN 上使用高安全性模式,将见证服务器添加至会话时请小心谨慎,因为可能会发生意外的自动故障转移。有关详细信息,请参阅本主题后面的“部署数据库镜像的建议”。
使用异步操作可获得最佳的数据库镜像性能。如果镜像会话使用同步操作,则当该会话的工作负荷生成大量事务日志数据时,可能会降低性能。
在测试环境中,应当研究所有运行模式以评估数据库镜像的执行方式。但是,在生产环境中部署镜像之前,务必了解网络在实际环境中的运行方式,以便预测数据库镜像在其中的工作方式。
具有自动故障转移功能的高安全性模式专用于具有专用连接或非常简单的网络配置的高级服务网络,它可最大程度地减少可能的网络故障源。这种高质量的网络环境对于具有自动故障转移功能的高安全性模式而言至关重要,同时也建议将其用于数据库镜像会话。但是,网络可靠性对高性能模式和不带自动故障转移功能的高安全性模式具有较小的影响。
因此,对于生产环境,建议遵守下列部署指导原则:
- 在异步、高性能模式下开始运行。此模式受网络环境的影响最小,并为研究镜像的工作方式提供了最佳配置。除非您确信自己的带宽支持镜像,并且非常了解镜像设置以及异步模式在您环境中的性能的相关知识,否则,建议异步运行系统。有关详细信息,请参阅异步数据库镜像(高性能模式)。
建议您在测试过程中监视会话,以便发现导致数据库镜像失败的网络错误。有关潜在的故障源的详细信息,请参阅数据库镜像期间可能出现的故障。有关监视数据库镜像的信息,请参阅监视数据库镜像。 - 在确信异步操作符合您的业务要求之后,您可能希望尝试同步操作,以改善数据保护功能。当测试同步镜像在环境中的工作方式时,建议首先测试不带自动故障转移功能的高安全性模式。此测试的主要目的是了解同步操作如何影响数据库的性能。有关详细信息,请参阅同步数据库镜像(高安全性模式)。
- 等待启用自动故障转移,直到确信不带自动故障转移功能的高安全性模式满足您的业务需要并且网络错误不会导致故障。有关详细信息,请参阅自动故障转移。
使用 vardecimal 存储格式时,数据库镜像可以正常执行。但必须将每个数据库引擎至少升级到 SQL Server 2005 Service Pack 2,并且必须对所有相关数据库启用 vardecimal 存储格式。有关 vardecimal 存储格式的详细信息,请参阅将 Decimal 数据存储为可变长度类型。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)