SqlServer 订阅和发布

本文描述利用Sql Server订阅和发布来进行两个服务器之间的热备份。

1 准备

首先两个服务器之间要能相互通讯,也就是能ping命令能通。
平时我们链接数据库的时候,经常都是用的ip登陆,但是发布的时候不能这样,必须用服务器名称,不然会报错,修改host文件,将IP地址和名字加入的服务器上。

2 发布

2.1.新建发布

在数据库A服务器下找到【复制】-【本地发布】-【新建发布】

2.2 选择要发布的数据

2.3 选择发布类型,这里选择事务发布。(可根据需求选择类型)

发布分为4种模式:

A.快照发布

  发布服务器按'预定的时间间隔'向订阅服务器发送已发布数据的快照。

  快照发布,就是将所有要发布的内容,做成一个镜像文件,然后一次性复制到订阅服务器,两次快照之间的更新不会实时同步,而是按照设置的'预定间隔'进行。这种方式占用带宽较多,因此比较适用内容不是很大,或者更新不需要很频繁的场景。

B.事务发布

  在订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。

  事务发布,是在第一次设置好事务复制之后,所有发布的内容都会进行镜像快照,订阅服务器收到已发布数据的初始快照后,发布服务器将事务流式传输到订阅服务器。当主服务器数据发生变更时,会通过日志传递同步

给订阅服务器,数据近似于同步更新。

  此方式会对主服务器性能造成很大影响(实时同步每次变更,而不是最终变更),适用于对数据及时性要求比较严格主备方案,但是目前已被微软提供的集群Always On所取代。

C.对等发布

  对等发布支持多主复制。发布服务器将事务流式传输到拓扑中的所有对等方。所有对等节点可以读取和写入更改,且所有更改将传播到拓扑中的所有节点。

D.合并发布

  合并发布是相当于两台都是主服务器,都可以对数据进行更新修改等操作,然后定时将发布服务器上的内容与订阅服务器上的内容进行合并,并根据配置保留相应内容,此种很少用。

2.4 选择发布的内容,即要发布哪些数据

2.5 进行数据筛选,可以在这一步就行条件过滤,当然也可以不设置条件,选取所有数据

2.6 设置快照代理并更改同步频率

2.7 安全性设置,即配置登陆类型,登陆账户密码

注意:不建议使用Sa账号, 单独再新建一个sqlserver账户,而且要有该数据库的db_owner权限

2.8 设定一个发布名称

最终,到这一步,发布算是完成了,接下来就开始看订阅。

3 订阅

订阅是对刚才发布的快照进行同步,即将数据源数据同步到目标数据库。

3.1 在服务器B上,【复制】-【本地订阅】-【新建订阅】

3.2 选择订阅发布

注意:填写发布服务器(A服务器)名称:填写计算机名称
选择Sql Server 身份验证 使用sa 账号登录

3.3 选择分发代理的位置,选择一个简单的推送订阅

3.4 设置订阅服务器的目标数据库

3.5 设置代理安全性,即订阅服务器的账户密码

3.6 设置同步计划,这里选择连续运行

3.7 点击完成,订阅配置完成

3.8 查看监视。在【本地发布】-【启动复制监视器】,点开就能查看快照的运行状态,和其他详细信息

至此,发布与订阅都已完成。在服务器B中codefirst这个数据库中,会发现多了一张user的数据表,这表示A服务器的数据传到B上了。当在服务器A修改user表中的记录(源数据)时,B里面的记录(目标数据)也会改变。

常见问题
1, 两台主机的 1433端口互相不通
2, SqlServer Agent 代理没有开启
3, 没有配置 hosts 文件中的ip和主机名映射
4, ReplData文件夹权限不足

Lokie博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • 本博客使用免费开源的 laravel-bjyblog v5.5.1.1 搭建 © 2014-2018 lokie.wang 版权所有 ICP证:沪ICP备18016993号
  • 联系邮箱:kitche1985@hotmail.com