复制是一个开发范畴的技术,但是也可以像日志传送一样作为高可用技术的一个后备选项。
一、复制的拓扑
二、复制的冲突处理
在执行复制时,源数据库与目标数据库都是敞开式的,因此在写入记录时可能发生冲突。为解决冲突,常用的方法有以下两种:
1. 合并复制
合并复制允许存在冲突。当冲突发生时,合并复制将比较这些记录的时间戳,仅保留最新的记录(时间戳最后的那条记录)。
2. 专用的写入区
一种方式是将read请求随机发送给任意一个数据库,而将write指定只写入发布服务器。
另一种方式是设置专用的写入区,所有写入被事先隔离,从而避免冲突。例如,一个table被分割成3个table,分别保存3个分公司的数据。
三、复制在负载均衡中的应用
在一些稍微容忍数据同步存在延迟的场合,复制可以作为负载均衡的手段。这种实现方法,其实质是通过复制实现分布式数据库。
例如:工厂的流水线生产过程中的数据采集,可以根据车间与流水线的分布情况,部署多套SQL Server,然后通过复制实现数据的分布式存储、查询。