002.SQLServer数据库镜像高可用简介
一 数据库镜像简介
1.1 数据库镜像概述
数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎服务器实例上。 通常,这些服务器实例驻留在不同位置的计算机上。 启动数据库上的数据库镜像操作时,在这些服务器实例之间形成一种关系,称为“数据库镜像会话”。 其中一个服务器实例使数据库服务于客户端(“主体服务器”), 另一个服务器实例则根据镜像会话的配置和状态,充当热备用或温备用服务器(“镜像服务器”)。 同步数据库镜像会话时,数据库镜像提供热备用服务器,可支持在已提交事务不丢失数据的情况下进行快速故障转移。 未同步会话时,镜像服务器通常用作热备用服务器(可能造成数据丢失)。 在“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。 两个伙伴在会话中扮演互补的角色:“主体角色”和“镜像角色”。 在任何给定的时间,都是一个伙伴扮演主体角色,另一个伙伴扮演镜像角色。 每个伙伴拥有其当前角色。 拥有主体角色的伙伴称为“主体服务器”,其数据库副本为当前的主体数据库。 拥有镜像角色的伙伴称为“镜像服务器”,其数据库副本为当前的镜像数据库。 如果数据库镜像部署在生产环境中,则主体数据库即为“生产数据库”。 数据库镜像涉及尽快将对主体数据库执行的每项插入、更新和删除操作“重做”到镜像数据库中。 重做通过将活动事务日志记录的流发送到镜像服务器来完成,这会尽快将日志记录按顺序应用到镜像数据库中。 与逻辑级别执行的复制不同,数据库镜像在物理日志记录级别执行。 从 SQL Server 2008 开始,在事务日志记录的流发送到镜像服务器之前,主体服务器会先将其压缩。 在所有镜像会话中都会进行这种日志压缩。 提示:给定的服务器实例可以参与到多个具有相同或不同伙伴的并发数据库镜像会话中。 某个服务器实例可能在某些会话中是伙伴,而在其他会话中则是见证服务器。 镜像服务器实例必须正在运行 SQL Server 的相同版本。1.2 数据库镜像的优点
数据库镜像是一种简单的策略,具有下列优点:- 提高数据库的可用性
- 增强数据保护功能
- 提高生产数据库在升级期间的可用性
1.3 数据库镜像术语和定义
- 自动故障转移 (automatic failover)
- 故障转移伙伴 (failover partners)
- 高性能模式 (High-performance mode)

- 高安全性模式 (High-safety mode)


- 手动故障转移 (manual failover)
- 镜像数据库 (mirror database)
- 镜像服务器 (mirror server)
- 镜像服务器 (mirror server)
- 主体数据库 (principal database)
- 主体服务器 (principal server)
- 重做队列 (redo queue)
- 角色 (role)
- 角色切换 (role switching)
- 发送队列 (send queue)
- 会话 (session)
- 事务安全 (Transaction safety)
- 见证服务器 (Witness)
1.4 运行模式
数据库镜像会话以同步操作或异步操作运行。 在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。 在同步操作下,事务将在伙伴双方处提交,但会延长事务滞后时间。 有两种镜像运行模式。 一种是“高安全性模式”,它支持同步操作。 在高安全性模式下,当会话开始时,镜像服务器将使镜像数据库尽快与主体数据库同步。 一旦同步了数据库,事务将在伙伴双方处提交,这会延长事务滞后时间。 第二种运行模式,即“高性能模式”,异步运行。 镜像服务器尝试与主体服务器发送的日志记录保持同步。 镜像数据库可能稍微滞后于主体数据库。 但是,数据库之间的时间间隔通常很小。 但是,如果主体服务器的工作负荷过高或镜像服务器系统的负荷过高,则时间间隔会增大。 所有数据库镜像会话都只支持一台主体服务器和一台镜像服务器。

二 角色切换
2.1 切换概述
在数据库镜像会话上下文中,通常可以使用一个称为“角色切换”的过程来互换主体角色和镜像角色。 角色切换涉及将主体角色转换给镜像服务器的操作。 在角色切换中,镜像服务器充当主体服务器的“故障转移伙伴”。 进行角色切换时,镜像服务器将接管主体角色,并使其数据库的副本联机以作为新的主体数据库。 以前的主体服务器(如果有)将充当镜像角色,并且其数据库将变为新的镜像数据库。 这些角色可以反复地来回切换。2.2 角色切换形式
- 自动故障转移
- 手动故障转移
- 强制服务(可能造成数据丢失)

三 其他
3.1 暂停会话对主体事务日志的影响
数据库所有者可以随时暂停会话。 执行暂停操作将保留在删除镜像时的会话状态。 暂停会话时,主体服务器不会向镜像服务器发送任何新的日志记录。 所有这些记录将保持活动状态,并堆积在主体数据库的事务日志中。 只要数据库镜像会话保持暂停状态,事务日志就不会被截断。 因此,如果数据库镜像会话暂停时间过长,则可能会使该日志填满。3.2 设置数据库镜像会话
开始镜像会话之前,数据库所有者或系统管理员必须创建镜像数据库,设置端点和登录名。在某些情况下,还要创建并设置证书。3.3 与其他数据库引擎功能的互操作性和共存
数据库镜像可以与 SQL Server 的下列功能或组件一起使用。- 日志传送
- 全文目录
- 数据库快照
- 复制

更多精彩