数据库同步在数据库应用中还是挺广泛的,这篇主要是对数据库同步(事务发布)做个详细的记录,当然也查阅一些资料对其它几种发布也做一个简单的概述.
一.数据库复制概述
1.数据库发布有三种角色
发布服务器: 也称为出版服务器,主要负责数据的发布和出版工作。这个角色就好比我们的出版社或者报社。
分发服务器: 主要负责将发布服务器的内容分发给订阅者。他是连接发布服务器和订阅服务器的桥梁。这个角色就好比我们的邮递员,将书和报纸送到我们的手里。
订阅服务器: 主要负责接收发布的内容。这个角色就好比我们自己订阅书和报纸,是一个订阅者的角色。
2.数据订阅模式
数据订阅的模式有推式订阅和拉式订阅两种。推式订阅主要是分发服务器将数据推给订阅服务器。 拉式订阅是订阅服务器主动向分发服务器取数据。
这就好比我们自己订阅杂志和报纸一样,如果人家送货上门,这就是推式订阅,消耗的是分发服务器的资源,也就是消耗送货人员的资源。如果是拉式订阅,我们就需要自己到书店去购买,这样消耗的就是我们自己的资料。消耗的是订阅服务器的资源。
3.数据发布类型
A. 快照复制
当符合以下一个或多个条件时,使用快照复制本身是最合适的:
· 很少更改数据。
· 在一段时间内允许具有相对发布服务器已过时的数据副本。
· 复制少量数据。
· 在短期内出现大量更改
B. 事务复制
事务性复制通常用于服务器到服务器环境中,在以下各种情况下适合采用事务性复制:
· 希望发生增量更改时将其传播到订阅服务器。
· 从发布服务器上发生更改,至更改到达订阅服务器,应用程序需要这两者之间的滞后时间较短。
· 应用程序需要访问中间数据状态。例如,如果某一行更改了五次,事务性复制将允许应用程序响应每次更改(例如,激发触发器),而不只是响应该行最终的数据更改。
· 发布服务器有大量的插入、更新和删除活动。
C. 合并复制
合并复制通常用于服务器到客户端的环境中。合并复制适用于下列各种情况:
· 多个订阅服务器可能会在不同时间更新同一数据,并将其更改传播到发布服务器和其他订阅服务器。
· 订阅服务器需要接收数据,脱机更改数据,并在以后与发布服务器和其他订阅服务器同步更改。
· 每个订阅服务器都需要不同的数据分区。
· 可能会发生冲突,并且在冲突发生时,您需要具有检测和解决冲突的能力。
· 应用程序需要最终的数据更改结果,而不是访问中间数据状态。例如,如果在订阅服务器与发布服务器进行同步之前,订阅服务器上的行更改了五次,
则该行在发布服务器上仅更改一次来反映最终数据更改(也就是第五次更改的值)。
另外有几点要注意:
1. 数据库故障还原模型必需为完全还原模型。
2. 所有被同步的数据表都必须要用主键。
3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称.
4. SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。
5. 如果非同一网段或者远程服务器,需要将其对应关系加到本地系统网络配置文件中。文件的具体位置在%systemroot%\system32\drivers\etc\hosts
配置方式: 用记事本打开hosts文件,在文件的最下方添加IP地址和主机名的对应关系。如图:
二.下面以事务发布为例详细说一下配置.
A.发布
1、找到数据库服务器下的【复制】--【本地发布】,选择【新建发布】。如下图:
2、选择待发布的数据库。如下图:
3、选择发布类型。这里选择的类型【事务发布】。几种发布类型的区别,SQL SERVER都在下面给出了说明。如下图:
4、选择待发布的类容。如下图:
5、设置快照代理。如下图:
6、设置代理安全性。如下图:
7、填写发布名称
8、完成发布。如下图:
B、订阅
1、找到数据库服务器下的【复制】--【本地订阅】,选择【新建订阅】。如下图:
2、选择订阅的发布。如下图:
3、选择分发代理的位置;如下图:
4、选择订阅服务器上的存放同步过来的数据的一个或者多个目标数据库。如下图:
若要添加多个订阅数据库,则点击【添加订阅服务器】。如下图:
5、设置分发代理的安全性。如下图:
6、设置同步计划。如下图:
7、完成订阅。如下图:
这样就完成了发布与订阅的整个流程。