发布订阅用来做数据库的读写分离,还是很好用的
当单台数据库的压力太大时,可以考虑这种方案,一主多从,主服务器的数据库只管写入,其他的数据库都是只读也是一种很好的方案
开始
我们选择A服务器做为发布的服务器,
B服务器做为订阅的服务器,
第一部分A服务器
选择要A服务器,选择 “复制”,“本地发布”,右键本地发布
如果是第一次会有如下,一直点下一步
注意:..\ ReplData这个文件夹是发布所在的文件夹,要保持访问权限,当在c盘时,有时可能会出现无法访问,我这里一般会给ReplData这个文件夹加上everyone权限
选择要发布的数据库
注意:这个数据库要有过完整备份
选择发布类型
注意:实时性高,数据量大的一般选择事务发布比较好
一直点下一步
注意,这一步很关键
注意:1,不要用sa账户,单独再新建一个sqlserver账户,而且要有该数据库的db_owner权限,
我们来添加一个test账户 找到“安全性”,右键“登录名”
点击“用户映射”更改一下test账户权限
这个test账户一定要有你即将要发布的数据库的public和db_owner权限
然后:在B服务器上进行一模一样添加test账户的操作,后面会用到
添加完成之后继续发布,加上我们添加的Test账户
有个警告,说代理没运行
找到sqlserver管理器,将代理运行起来,
,B服务器也进行相同的操作,保证sqlserver代理都是开着的
到这里还不够
下一步,配置host,找到 A服务器文件 c:\windows\system32\drivers\etc下的hosts文件
在最后一行填上B服务器的ip 和主机名, 注意,ip和名字之间隔空格,这个ip可是是内网,也可以是公网
然后A服务器就完备了,没啥事了,接下来配置B服务器,
第二部分,B服务器
在B服务器进行相同的操作主机上进行相同的添加host操作
将A服务器的ip 和主机名 添加到B服务器的hosts文件下面,
然后开始创建订阅
选择查找SqlServer服务器,这里服务器名称写A服务器的名称,不能用ip,用刚才在hosts文件里面那个A服务器的主机名
使用sa或者刚才创建的test账户登录,登录成功后,会看到A服务器的发布
选择上面的,推送订阅,好处是便于集中管理
账户还用刚才创建的那个test
然后一直下一步,直到完成
创建完成
测试一下,在A服务器添加一条数据
可以看到,B服务器马上也有了,删除修改也会同步,到这里就全部成功
其他
在A服务器上面查看订阅的状况
右键当前的发布,“启动复制监视器”
可以看到当前的状况,
如果订阅没有成功,或者数据没能同步,可以在这里看看日志,查找原因。
常见问题
1, 两台主机的 1433端口互相不通
2, SqlServer Agent 代理没有开启
3, 没有配置 hosts 文件中的ip和主机名映射
4, ReplData文件夹权限不足
转自:
https://www.cnblogs.com/zhengcheng/p/4492423.html
https://www.cnblogs.com/jimsfriend/p/10436038.html