一、为什么要使用对等事务复制
首先要说明的是使用sqlserver复制的目的
使用sqlserver数据库复制的目的,就是要将数据库压力由一台服务器分散到多台服务器,通过一台sqlserver服务器作为主机,将主数据库中的数据,复制到其他N台备份服务器上,从而实现分布式查询,大大降低了主服务器的压力.
在图一中,右面的拓扑结构就是典型的复制,写入的压力,全都在B这台服务器上,读取的压力平衡到两台机器上
图一
综上所述,使用sqlserver复制的目的就是均衡压力,提高sqlserver的高可用性
类似的能够提高数据库高可用性的解决方案目前有四种
1 windows集群实现sqlserver双机热备
2 sqlserver 数据库镜像
3 sqlserver日志传送
4 sqlserver复制
在这四种解决方案中,能够满足分布式数据库需求的只有sqlserver复制
其次为什么要使用事务复制呢?在sqlserver复制技术中,共有三种
1 快照复制
2 事务复制
3 合并复制
在这三种复制技术中
快照复制最简单,定时将主数据库中的所有数据,同步到其他备份机器中,这样做的缺点有两点,1 数据同步定时,不即时;2 浪费I/O资源,每次同步都是将主数据库中的所有数据同步到其他备份机器上.快照复制的主要用途是定期初始化备份机,例如在进行事务复制时可用设定每周进行一次快照复制,有效的保证了主数据库与其他备份数据库的数据一致性.
合并复制较为复杂,在合并复制中主数据库与其他备份数据库可以同时修改一条数据,当发生冲突是,处理起来较为复杂.
事务复制是最适合做分布式的,首先,要求主数据库和其他备份数据库中的架构和数据一致(可以通过使用相同的备份还原,快照复制等方法),当数据库运行时,只用当主数据库中的架构或者数据发生变动,才产生事务将变动同步到其他备份数据库上.相比快照复制,同步即时,又省I/O资源.相比合并复制,简单,可靠.
那为什么要使用对等事务复制呢?
在sqlserver 事务复制中,又分为三种方式
1 标准事务复制
2 层次结构更新订阅事务复制
3 对等事务复制
在上面,介绍复制技术的三种方式中,已经将了标准事务复制的好处,但是这里要讲讲它的缺点,大家可以再仔细看看图一,就会发现,所有写入压力都在B这台服务器上,也就是说事务复制的瓶颈在于主服务器,当主服务器挂掉时,虽然其他备份数据依然可以提供读取服务,但是这个数据库系统已经挂掉了,不能写入了.
这时应该怎么办?别担心,Microsoft已经为我们提供了解决方案,那就是可更新订阅的事务复制和对等事务复制
可更新订阅的事务复制有一个特性,可以同时在多个位置(服务器)更改同一行。这必然会带来冲突.
所以我们选择了对等事务复制,同一行在同一时间只能在一个位置修改.
图一中,左边的图,就是典型的对等事务复制,不单单读取的压力被分散到多台服务器上,连写入的压力也被分散了.
图二中就是一个典型的对等事务复制实施案例
图二
上图显示了三个参与数据库,它们作为一家在洛杉矶、伦敦和中国台北均设有办事处的国际软件支持单位的后端数据库。每个办事处的支持工程师接听客户电话,并输入和更新每个客户电话的相关信息。三个办事处的时区各相差八小时,因此不会出现工作日的重叠:台北办事处下班时,伦敦办事处正开始一天的工作。如果办事处下班时电话仍在进行中,则电话将被转接到下一个开始办公的办事处的代表。
每个地点都有一台数据库服务器和一台应用程序服务器,供支持工程师在输入和更新客户电话的相关信息时使用。拓扑按时间进行分区,因此更新只发生在正在办公的节点。然后更新流动到其他参与数据库。此拓扑具有下列优点:
· 独立,但不孤立:每个办事处都可以独立插入、更新或删除数据,还可以共享数据,因为数据将复制到其他所有的参与数据库。
· 出现故障或维护任一参与数据库的同时可提供更高的可用性。
图三
上图显示了向三节点拓扑添加节点的过程。当出现下列情形时,可以添加一个节点:
· 因为又开设了一家办事处。
· 为了提供更高的可用性以支持维护或提高发生灾难性错误时的容错能力。
请注意:在三节点拓扑和四节点拓扑中,所有的数据库都向其他数据库发布和订阅,从而在需要维护或者一个或多个节点发生故障时,提供最大的可用性。添加节点后,必须针对性能以及部署和管理的复杂性来权衡可用性和可伸缩性的需要。
发布与订阅 :
描述 : 在同一台服务器上不同数据库 (数据结构完全相同) 进行发布与订阅.
如图有T1,T2两个数据库
我们把T1作为发布数据库,T2作为订阅数据库.然后开始创建发布。
如图找到 复制-----》本地发布-------》
点击新建发布-----》然后下一步-------》 选择数据库T1---------》
下一步----》发布类型选择 事务性发布 ----------》然后选择要发布的项(表,存储过程,函数等)-------》下一步-----》筛选表行没有直接下一步----进入快照代理选中立即创建快照 如图:
然后下一步-------》代理安全设置 如图:
点击 安全设置 如图:
选中sql代理服务帐户,然后选择sqlserver 登录名 ,确定-------》下一步-----------》 然后一直下一步成功后如图:
第二步:创建订阅:本地订阅 ----新建订阅 如图
然后下一步------》下一步------》下一步-------》如图:
下一步------》分发代理的安全性如图:
点击框框----》进入分发代理的安全性-- 如图:
输入用户名密码,然后确定------然后一直下一步。成功后你会看到 如图:
然后你就可以对发布的数据库T1进行操作(添加,更新,删除)包括(表,存储过程,函数等) 然后你去相同的表,存储过程,函数等去查询,延迟一般不会太久,你就会看到T2数据库的变化。