事物复制中大项目(Large Article)出问题如何快速修复
2013-10-09 18:12
253 查看
事物日志中如果大的发布项目(Article)出问题了,并且影响了系统的使用,如何快速的解决?
一般的做法是重新用快照或者备份初始化,但是如果出问题的表非常大(上亿的记录,几十GB的数据),使用初始化是非常耗费时间的。
其实可以重建发布订阅,而不用快照初始化的方式解决,这样就极大的节省了初始化的时间,而且不会对主库的表加锁。
具体的步骤如下:
1. 将发布订阅的脚本导出到SSMS新的查询窗口
![](http://img.blog.csdn.net/20131009143618312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva2V2aW5zcWxzZXJ2ZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这里我们需要注意的是两个参数:
execsp_addarticle @pre_creation_cmd =N'drop'
drop:表示删除存在的对象重新创建
exec sp_addsubscription @sync_type = N'automatic'
Automatic:数据和Schema由发布表初始化
2. 修改脚本,将上面的两个属性修改为:
@pre_creation_cmd=’none’ (数据架构都已经在订阅段准备好了,不需要snapshot同步了).
@sync_type = N'replication support only' (架构和数据已经初始化)
3. 使用SSMS删除发布订阅
4. 同步数据,可以使用Redgate’sData Compare比对数据将发布订阅表数据完全同步,也可以通过其他方法比如BCP之类的。
5. 数据同步完成后执行第二步保存的脚本,就会创建新的发布和订阅,数据保持同步。
通过这样的步骤相比Snapshot初始化时间大大减少。因为要保证两边的数据完全同步,所以在创建发布订阅的过程中不能有新的事物发生,所以要有停机时间。使用之前一定要自己测试哦。
一般的做法是重新用快照或者备份初始化,但是如果出问题的表非常大(上亿的记录,几十GB的数据),使用初始化是非常耗费时间的。
其实可以重建发布订阅,而不用快照初始化的方式解决,这样就极大的节省了初始化的时间,而且不会对主库的表加锁。
具体的步骤如下:
1. 将发布订阅的脚本导出到SSMS新的查询窗口
这里我们需要注意的是两个参数:
execsp_addarticle @pre_creation_cmd =N'drop'
drop:表示删除存在的对象重新创建
exec sp_addsubscription @sync_type = N'automatic'
Automatic:数据和Schema由发布表初始化
2. 修改脚本,将上面的两个属性修改为:
@pre_creation_cmd=’none’ (数据架构都已经在订阅段准备好了,不需要snapshot同步了).
@sync_type = N'replication support only' (架构和数据已经初始化)
3. 使用SSMS删除发布订阅
4. 同步数据,可以使用Redgate’sData Compare比对数据将发布订阅表数据完全同步,也可以通过其他方法比如BCP之类的。
5. 数据同步完成后执行第二步保存的脚本,就会创建新的发布和订阅,数据保持同步。
通过这样的步骤相比Snapshot初始化时间大大减少。因为要保证两边的数据完全同步,所以在创建发布订阅的过程中不能有新的事物发生,所以要有停机时间。使用之前一定要自己测试哦。
相关文章推荐
- 事物复制中大项目(Large Article)出问题如何快速修复
- 事物复制中大项目(Large Article)出问题如何快速修复
- 项目修复(最根本的问题通常是如何完成而非其它)
- 项目网站页面制作中如何快速定位导致页面莫名问题位置!
- C#.NET常见问题(FAQ)-程序如何把窗体文件从从一个项目中复制到另一个项目
- 如何使用Maven的archetype快速生成一个新项目(解决生成项目目录不完整问题)
- 线上的项目如何快速定位问题
- 在eclipse中如何快速打开项目源文件
- 4566 开发笔记(2)修复快速重复点击 NavigationItem 导致的导航栈错乱问题
- 如何快速对系统重启问题进行归类
- 浅谈在项目中遇到问题我们应该如何解决
- 如何导入别人的android studio项目,解决gradle版本不兼容问题
- 如何快速解决IT系统中的疑难故障问题
- 如何利用NB代码生成工具和NBear框架,快速开发WEB项目
- webx项目如何调试的问题
- 如何修复.Net和COM之间枚举名称的问题(续)
- 如何维护大项目-修复bug
- cmd如何实现快速粘贴复制
- 如何给maven项目增加新的jar包(从服务器上下载)---通过从web页面复制信息
- vim常用快捷键总结(包括如何快速复制一段text)