读写分离方案 | 实时同步 | 副本数据是否直接可读 | 副本数 | 最小粒度 | 副本建立索引 | 环境 | 缺点 |
---|---|---|---|---|---|---|---|
镜像 | 是 | 否(需要开启快照,只读) | 1 | 库 | 否 | 域/非域(使用证书) | 在高安全模式下对主库性能有一定影响 |
日志传送 | 否 | 是(只读) | N | 库 | 否 | UNC方式可访问 | 副本库在做resotre时会断开已连接用户连接/可能影响常规日志备份 |
发布订阅 | 是 | 是(读写,但写可能会产生数据不一致) | N | 表(查询) | 是 | 域/非域 | 在主库上有大量DML操作时,对分发服务器会有一定影响,且订阅数据库可能有数据同步延迟 |
always on | 是 | 是(只读) | 4(sql 2012) 8(sql 2014) |
库 | 否 | 域 | 非域环境无法使用 |
其中发布订阅有如下几种类型:
1. 快照发布:
发布服务器按预定的时间间隔向订阅服务器发送已发布数据的快照。
快照发布是完全按照数据和数据库对象出现时的状态来复制和分发它们的过程[2]。首先在某一时刻将发布数据库进行快照后产生镜像文件,然后在约定的时刻或时间间隔内由分发代理程序将文件复制到订阅数据库。订阅服务器复制的内容是发布数据库某一时刻的状态。
快照方式不实时进行数据同步,而是每隔一个时段或在某一个时间点进行数据库复制,同步方式为单向同步。
优点是数据复制方式稳定,不必监视对数据的更新。由于是将数据库复制到订阅服务器,所以在大数据量的同步场景下存在以下缺点:占用网络带宽较大、数据同步周期较长。
快照方式适用于以下场景:
(1)主库数据量小、更新不频繁。
(2)主从库接受同步延迟。快照方式由于复制数据量大导致延迟较高,可以利用读写较少的时间(如深夜)进行快照复制,将影响范围缩减至最低。
事务发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。
事务发布是将发布服务器的初始快照将复制到订阅服务器。订阅服务器接收到初始数据后,代理服务会连续监测数据变化,当发布服务器上发生数据修改时,会将这些新增的事务传递给日志代理,然后日志代理通知订阅服务器,订阅服务器进行新增事务的执行。
主从服务器之间通过新增事务复制的方式进行主从同步,发布数据库上增删改等操作的事务日志会在短时间内复制到订阅数据库。
相对快照复制,事务复制优点是复制内容小、数据传递快,所以从库更新延迟小,对大数据量的同步有可靠保证。缺点是如果主库进行读写操作频繁,则同步过程中会对服务器性能造成影响。由于发布和订阅服务之间是实时进行事务传递,所以要保证两者之间相互连接的网络稳定可靠。
这种同步方式适用于以下应用场景:
(1)要求主从库同步延迟小。因为复制的内容是数据库更改的增量,且事务日志内容较小,所以可以在较短的时间实现同步。
(2)主库频繁进行DML操作(增加、删除、修改)。如果采用快照方式同步,则同步时延过高,不能做出及时响应。
(3)数据同步方式为单向。同步的方向是由发布同步至订阅服务器,订阅服务器上的数据库为只读状态。但如果订阅数据库上产生更改,则不会将事务回传至发布服务器。
使用事务发布方式实现数据同步(Data synchronization through transaction publishing):
1.SQL Server中要进行数据同步需要满足以下条件:
2.被同步的数据表需要有主键,如果没有主键则会增加一个int类型的自增列id(增量为1);
3.SQL Server代理服务必须启动;
4.在进行SQL Server注册时,发布服务器和订阅服务器必须使用计算机名称,不能使用IP地址或别名注册。
2. 对等发布:
对等发布支持多主复制。发布服务器将事务流式传输到拓扑中的所有对等方。所有对等节点可以读取和写入更改,且所有更改将传播到拓扑中的所有节点。
3. 合并发布:
在订阅服务器收到已发布数据的初始快照后,发布服务器和订阅服务器可以独立更新已发布数据。更改会定期合并。Microsoft SQL Server Compact Edition 只能订阅合并发布。
他们的限制如下:
1、快照复制和事务复制是单向的(2005及以后的版本中加入了订阅端可更新的事务复制)。
2、合并复制是双向的。
3、快照复制对表结构没有要求。
4、事务复制要求表有主键。
5、合并复制要求表有 rowguid 列。
版权声明:本文为博主原创文章,未经博主允许不得转载。