SQL Server ->> 高可用与灾难恢复(HADR)技术之 -- Transaction Replication(事务复制)
复制类型:
1)事务型复制:通过复制事务日志到订阅点重做的方式,属于增量型复制;
2)合并型复制:通过触发器和元数据表追踪表数据改变,同样属于增量型复制;
3)快照型复制:通过创建数据库快照,并把快照复制到目标点,覆盖订阅端数据库,不追踪数据改变,属于替换型复制;
复制代理:一组SQL SERVER Agent Jobs用于整个复制过程中完成某个任务
分发代理:用于快照型复制和事务型复制,用于把初始化快照和事务日志分发到订阅服务器。它存在分发服务器或者订阅服务器取决于是推(Push)或者拉(Pull);
复制日志读取器代理:用于事务型复制,将发布服务器上数据库的事务日志中标记为复制的日志块复制到分发服务器上。它存在分发服务器上。每个数据库都有独立的代理。
复制合并代理:用于合并型复制,将初始化快照和增量更新数据复制到订阅服务器。合并代理可以是在分发服务器上(Push),也可以在订阅服务器上(Pull)。合并代理将订阅服务器上的更改应用到发布服务器,然后将发布服务器上的更改下载到订阅服务器。
复制队列读取器代理:队列读取器代理用于包含排队更新选项的事务复制,用于分发服务器,并将订阅服务器上所做更改移回至发布服务器。只有一个队列读取器代理的实例为给定分发数据库的所有发布服务器和发布提供服务。
复制快照代理:复制包含许多执行计划维护和按需维护的维护作业。
重新发布数据
在重新发布模式中,发布服务器将数据发送到订阅服务器,后者将数据重新发布到任意数目的其他订阅服务器。 当发布服务器必须通过低速或昂贵的通信链接向订阅服务器发送数据时,这很有用。 如果在链接的远端有许多订阅服务器,那么使用重新发布服务器可将大量分发负荷转移到链接的远端。
安全性
数据库数据传输加密
安全实体权限控制和数据访问控制
角色管理
筛选发布数据
管理
备份和还原复制的数据库
复制支持将复制的数据库还原到从中创建备份的同一服务器和数据库。 如果将复制数据库的备份还原到其他服务器或数据库,则无法保留复制设置。在这种情况下,您必须在还原备份后重新创建所有发布和订阅。
备份发布服务器、分发服务器和所有订阅服务器上的 master 和 msdb 系统数据库和发布数据库、订阅数据库和分发数据库。
如果执行定期日志备份,则在日志备份中应捕获所有与复制相关的更改。 如果不执行日志备份,则当与复制相关的设置发生更改时,应执行备份。
验证已复制的数据
对于事务复制和合并复制,可以验证订阅服务器中的数据与发布服务器中的数据是否匹配。分发代理或合并代理便会在下次运行时验证数据。
有两种验证类型可选:RowCount Only和RowCount and binary Checksum。
除了验证订阅服务器和发布服务器上的数据是否匹配之外,合并复制还提供验证每个订阅服务器上的数据是否正确分区的功能。
使用tablediff工具来比较所复制的表的差异
通过SQL SSERVER AGENT服务的Alert功能配置复制警报
-
复制:代理成功
-
复制:代理失败
-
复制:代理重试
-
复制:已删除过期的订阅
-
复制:验证失败后重新初始化了订阅
-
复制:订阅服务器未通过数据验证
-
复制:订阅服务器已通过数据验证
-
复制:代理自定义关闭
为事务复制启用协调备份
在为数据库启用事务复制时,对分发数据库启用协调备份,以便在传播到分发服务器的事务未备份前不会截断发布数据库的事务日志。
筛选已发布数据
最大程度地减少通过网络发送的数据量,减少订阅服务器上需要的存储空间量,避免传输敏感数据。
复制提供了四种筛选器:
静态行筛选器,列筛选器,参数化行筛选器(仅适用于合并复制),联接筛选器(仅适用于合并复制)。
复制标识列
若要在多个节点上都有更新的复制拓扑中使用标识列,复制拓扑中的每个节点都必须使用不同范围的标识值,以避免出现重复。复制在每个订阅服务器上插入数据时,不会增加订阅服务器表中的标识列值,而是插入文字值 65。 仅用户插入,而复制代理不插入,将导致标识列值增加。手动管理列或由复制自动管理列。自动类型用于在订阅服务器上进行更新的合并复制和事务复制。指定发布服务器和订阅服务器的大小范围,复制将自动管理新范围的分配。手动用于订阅服务器上不进行更新的快照和事务复制,如果指定手动管理,则必须确保将范围分配给发布服务器和每个订阅服务器,还要确保在使用初始范围时,新范围已分配。
复制支持对已发布对象进行多种架构更改。 对 Microsoft SQL Server 发布服务器中相应的已发布对象进行以下任何架构更改时,默认情况下更改都将传播到所有 SQL Server 订阅服务器:ALTER TABLE,ALTER PROCEDURE,ALTER VIEW,ALTER FUNCTION。合并复制禁止在订阅服务器中进行架构更改。不支持显式添加、删除或更改索引。 支持为约束(如主键约束)隐式创建的索引。不支持更改或删除由复制管理的标识列。
复制支持分区,提供了一组属性来指定如何处理已分区表和索引。事务复制和合并复制不支持复制下列命令:ALTER INDEX 的 ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME 或 REBUILD WITH PARTITION 语句。 与之关联的更改将不会自动复制到订阅服务器。 它要求用户在订阅服务器上手动进行类似更改。复制支持分区切换。对于事务复制,将 @allow_partition_switch和@replicate_partition_switch设置为 true
参考: