发布订阅的一些小问题(初级)

不穿内裤的超人 2017-10-17 09:16:21
小白第一次使用发布订阅,按照百度上面我能看懂的。发布订阅能实现的功能目前对我来说,应该是实现数据同步。
先简单说明我要实现的东西。 一台主服务器用来实现增删改,另外一台查询服务器就是用来查询,两台都有相同的库,查询服务器库有些主服务器没有,有些表服务器没有。之前的做法是,我通过写存储过程,每晚定时同步一些数据到查询服务器。最大的问题是,时间久了,我不知道查询服务器数据是否能和主服务器保持一致(我觉得不一致的地方很多了)。
那么问题来了:
1.我做发布的服务器数据作为完整数据,仅配置发布,数据是否会丢失(比如同步成订阅服务器的错误数据)?
2.我选择发布所有的表,订阅可以只同步我需要的表?
3.因为目前两服务器数据可能不一样,新建立发布订阅是否能保证两边数据一致?(以前缺失的能否补回去)
4.如果上面一条不行,那么我重新完整把主服务器的数据重新备份一份还原成查询服务器,那么之后发布订阅完成后数据是否一致?
5.最坏的打算,万一某一次订阅的时间点,我查询机没开,等下次订阅才开机,是否会导致部分数据不同步?
6.万一我在订阅服务器上改动过任意一条数据,订阅是否停止?失效?还是下次订阅依旧能同步成正确的数据?(错误的那条要么能删掉或自动更正?)
7.有没有深度讲解订阅发布机制的博文,推荐看看?
...全文
649 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 3 楼 RINK_1 的回复:
1.不会丢失。 2.你如果一个发布包是包括了所有的表,好像订阅时是不能再进一步选择你需要的表。也就是订阅好像是以一个发布所包括的表为最小单位来订阅的,如果哪些表你不需要订阅,应该在发布里也不应该包括这些表。 3.新建订阅时,如果选择了初始化,那就会根据发布数据库来完全初始化订阅数据库,初始化后,两边数据库需要同步的表就一致了。 4.订阅数据库如果是在发布数据库最新的备份还原后建立的,那可以不用初始化,因为这时两边待同步的表本来就一致。 5.如果订阅数据库没开,只要在设置的规定时间内开机,那开机后会同步成一致,因为事务会保存在发布分发那里。 6.一般而言,在订阅那里单独修改数据不会使订阅停止,除非你刻意改成通过事务同步处理时发生违反约束。如果你在订阅这边刻意单独修改成功,届时通过同步的处理还是可能会把你修改过的数据更新为和发布一致的数据。
一般来说,是不是仅作为发布的服务器,内容不会因为订阅服务器数据改变而改变。发布类型sql 2008 R2有四种,我不确定哪种可能会修改到发布服务器数据。我可以不管订阅服务器的些许差错,但是发布服务器的数据不能根据订阅服务器更改,应该是能保证的吧
删库到跑路 2017-10-17
  • 打赏
  • 举报
回复
同意楼上大牛 实践懂得更多
OwenZeng_DBA 2017-10-17
  • 打赏
  • 举报
回复
1.不会丢失 2.可以 3.不可以补,它也不知道你缺哪些。你可以把第二台的删掉,第一台全部重新同步过去 4.重新用发布订阅初始化将行 5.下次可以继续同步上次没同步的数据,会有延迟,不过后面会补上的 6.要看改动的什么数据,如果你插入一天数据违反主键约束,那么同步将会报错。不能自动更正,你需要手动处理 7.百度下,有很多。不过我建议是你先熟悉下,再看看深入的
RINK_1 2017-10-17
  • 打赏
  • 举报
回复
1.不会丢失。 2.你如果一个发布包是包括了所有的表,好像订阅时是不能再进一步选择你需要的表。也就是订阅好像是以一个发布所包括的表为最小单位来订阅的,如果哪些表你不需要订阅,应该在发布里也不应该包括这些表。 3.新建订阅时,如果选择了初始化,那就会根据发布数据库来完全初始化订阅数据库,初始化后,两边数据库需要同步的表就一致了。 4.订阅数据库如果是在发布数据库最新的备份还原后建立的,那可以不用初始化,因为这时两边待同步的表本来就一致。 5.如果订阅数据库没开,只要在设置的规定时间内开机,那开机后会同步成一致,因为事务会保存在发布分发那里。 6.一般而言,在订阅那里单独修改数据不会使订阅停止,除非你刻意改成通过事务同步处理时发生违反约束。如果你在订阅这边刻意单独修改成功,届时通过同步的处理还是可能会把你修改过的数据更新为和发布一致的数据。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧