11.3 数据库镜像简介
11.3.1 数据库镜像会话
数据库镜像(Database Mirror)是 SQL Server 2005 SP1 引入的一种高可用技术。这种技术维护一个数据库的两个副本,这两个副本必须分别属于两个不同的 SQL Server 实例(通常这两个实例分别安装在不同的计算机上)。这些实例之间形成一种关系,称为“数据库镜像会话”(Database Mirroring Session)。
在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”(Partner)进行通信和协作。
数据库镜像技术有以下3种角色的服务器。
◆ 主体服务器(Principal Server)
其中一个实例为客户端提供服务,这个实例称为“主体服务器”。该服务器”扮演“主体角色”,其数据库副本为当前的“主体数据库”。
◆ 镜像服务器(Mirror Server)
另一个实例则充当备用服务器,这个实例称为“镜像服务器”(Mirror Server)。该服务器扮演“镜像角色”,其数据库副本为当前的“镜像数据库”。镜像数据库不能供客户端访问,但是可以为镜像数据库创建一个快照,让客户端访问这个快照。
◆ 见证服务器(Witness Server)
见证服务器并不能用于数据库,只是用来支持自动故障转移。见证服务器验证主体服务器是否保持运行,当见证服务器与主体服务器断开连接之后,如果此时镜像服务器和见证服务器保持相互连接,则镜像服务器启动自动故障转移,成为新的主体服务器。
所有数据库镜像会话都只支持一台主体服务器和一台镜像服务器,具有自动故障转移功能时需要使用一台见证服务器。下图显示了该配置。
提示:
镜像服务器实例必须与主体服务器实例运行相同版本的 SQL Server,例如,都是企业版。SQL Server 2008 或更高版本对见证服务器没有版本要求。
11.3.2 数据更新的原理
对数据库执行的每项插入、更新和删除操作都会生成事务日志记录。主体服务器将这些活动的事务日志记录打包成数据流发送到镜像服务器。镜像服务器将尽快对主体数据库的日志记录按顺序“重做”(Redo)到镜像数据库中,从而实现了数据数据。
与逻辑级别执行的复制不同,数据库镜像在物理日志记录级别执行。
为减少数据流,从 SQL Server 2008 开始,在事务日志记录的流发送到镜像服务器之前,主体服务器会先将其压缩。在所有镜像会话中都会进行这种日志压缩。
11.3.3 运行模式
数据库镜像会话以同步操作或异步操作运行。
在同步操作下,事务将在伙伴双方处提交。由于主体数据库需要等待镜像数据库将日志写入磁盘后返回的确认消息,因此会延长事务滞后时间。在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。
根据是否同步操作以及是否支持自动故障转移功能,数据库镜像有以下三种运行模式。
◆ 高安全性模式
高安全性模式支持同步操作。当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步。一旦同步了数据库,事务将在伙伴双方处提交,这会延长事务滞后时间。
◆ 高性能模式
高性能模式即异步运行。镜像服务器尝试与主体服务器发送的日志记录保持同步。镜像数据库可能稍微滞后于主体数据库。
主体服务器向镜像服务器发送事务日志记录之后,不会等待镜像服务器的确认。这意味着事务不需要等待镜像服务器将日志写入磁盘便可提交。此异步操作允许主体服务器在事务滞后时间最小的条件下运行,但可能会丢失某些数据。
◆ 自动故障转移模式(高可用模式)
在高安全模式运行时,可以添加见证服务器,从而实现自动故障转移。
11.3.4 数据库镜像的优势
数据库镜像技术有以下优势:
(1)消除存储方面的单一故障点
数据库镜像实现了一个数据库的两个副本,而且不像 AlwaysOn 故障转移群集实例那样依赖于共享存储。
(2)提高数据库可用性
发生灾难时,在具有自动故障转移功能的高安全性模式下,自动故障转移可快速使数据库的备用副本联机。在这种模式下,备用副本是“热备用”,不仅故障转移的速度非常快,而且不会丢失数据。
在其他运行模式下,数据库管理员可以选择强制服务(可能丢失部分数据),以替代数据库的备用副本。
(3)增强的数据保护
当数据库镜像运行在“高安全性”模式时,可以提供完整的数据冗余。
在其他运行模式下,数据库镜像也可以提供数据冗余,但可能丢失部分数据。但是,数据库之间的时间间隔通常很小;如果其中一个伙伴的系统负荷过高,则时间间隔会增大。
(4)自动页修复
在某些类型的错误导致页损坏,使其无法读取后,在 SQL Server 2008 企业版或更高版本上运行的数据库镜像伙伴(主体或镜像)将尝试自动修复该页。无法读取该页的伙伴将从其伙伴请求该页的新副本。如果此请求成功,则将以可读副本替换不可读的页,并且这通常会解决该错误。
11.3.5 数据库镜像的不足
镜像数据库技术有以下不足之处:
(1)版本限制
对于标准版的 SQL Server 实例,只可以使用“高安全模式”,即主体数据库与镜像数据库必须实现同步操作。在这种运行模式时,如果任何一个伙伴遇到性能问题,都将使同步操作带来较大的延时。
(2)镜像数据库的访问限制
镜像数据库甚至不可以提供只读访问,只有通过创建快照才能访问,因此镜像数据库的利用率不高。
由于数据库镜像技术存在上述不足,SQL Server 后续产品可能删除此项功能,建议改用 AlwaysOn 可用性组。
本文出自 “SQL Server 管理员指南” 博客,谢绝转载!