what
SQL SERVER2005复制是在不同数据库间保持数据结构和数据内容同步更新的一种方案。
由三部分构成:
发布服务器:包含了需要被发布的数据库,也就是需要向其它数据源分发内容的源数据库。
分发服务器:分发服务器包含了分发数据库,分发数据库的作用是存储转发发布服务器发过来的数据。一个分发服务器支持多个发布服务器
订阅服务器:包含了发布服务器所发布的数据的副本。这个副本可以是一个数据库,或者一个表,甚至是一个表的子集。
![](https://images0.cnblogs.com/blog2015/99135/201504/171053444957754.jpg)
包括三种模式:
1、快照复制:通过快照把发布数据库的结构和内容一次性同步到订阅数据库上
特点:每次更新数据大。适用于数据量不大,数据更新多,网络环境比较好的场景
2、合并复制:发布服务器和订阅数据库都修改后经过合并同步到发布数据库,发布数据库再同步到订阅数据库上
特点:适用于多个服务器都要更新数据的场景
3、事务复制:发布数据库只同步修改的地方到订阅数据库,主要根据修改日志来同步
特点:每次只同步有更改的部分,占用宽带小,实时性强。适用于实时性高的场景
订阅包括两种模式:
推订阅:发布服务器有更新的数据立即推送到订阅服务器
拉订阅:订阅服务器每隔一段时间去发布服务器查找是否有要更新的数据。
why
当我们采用读写分离,数据集群,故障转移时需要同步数据库,数据库复制就是实现该功能的手段之一。
how
创建发布
一、 准备3台SERVER,1台为发布服务器,1台为分发服务器,1台为订阅服务器,通常发布服务器和分发服务器为同1台SERVER。
二、确保3台SERVER能相互访问,SQL SERVER 远程连接需要开启,防火墙要开放1433端口。
三、根据网上发布教程进行操作,以下为教程网址:
删除发布
使用下面系统存储过程即可:
sp_removedbreplication @dbname = 'dbname' , @type = ‘type’
参数
[ @dbname=] 'dbname'
数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。此参数值为 NULL 时,将使用当前数据库。
[ @type = ] type
要为其删除数据库对象的复制的类型。type 的数据类型为 nvarchar(5),可以是下列值之一。
tran:删除事务复制发布对象。
merge:删除合并复制发布对象。
both(默认值):删除所有复制发布对象。
sp_removedbreplication @dbname = 'dbname' , @type = ‘type’
参数
[ @dbname=] 'dbname'
数据库的名称。dbname 的数据类型为 sysname,默认值为 NULL。此参数值为 NULL 时,将使用当前数据库。
[ @type = ] type
要为其删除数据库对象的复制的类型。type 的数据类型为 nvarchar(5),可以是下列值之一。
tran:删除事务复制发布对象。
merge:删除合并复制发布对象。
both(默认值):删除所有复制发布对象。