Replication--备份初始化需要还原备份么?
测试场景:
发布服务器:SQLVM6\SQL2
订阅服务器:SQLVM5\SQL2
分发服务器:SQLVM3\SQL2
发布数据库:RepDB2
订阅数据库:RepDB2
发布:RepDB2_TB1
测试步骤:
1>停止发布库上的日志备份
2>备份发布服务器上数据库"RepDB2" 至"E:\REPDB2.BAK"
3>将备份复制到订阅服务器,还原出数据库RepDB2_Temp
4>在订阅服务器上将 RepDB2_Temp 订阅相关的数据导入到 RepDB2(INSERT SELECT)
5>将发布RepDB2_TB1的属性"允许从备份文件初始化"设置为True
--================================================== --发布服务器上运行 USE [RepDB2] GO DECLARE @publication AS sysname SET @publication = N'RepDB2_TB1' EXEC sp_changepublication @publication = @publication, @property = N'allow_initialize_from_backup', @value = true
6>运行以下脚本创建订阅
use [RepDB2] go exec sp_addsubscription @publication = N'RepDB2_TB1', @subscriber = N'SQLVM5\SQL2', @destination_db = N'RepDB2', @subscription_type = N'Push', @sync_type = N'initialize with backup', @article = N'all', @update_mode = N'read only', @subscriber_type = 0, @backupdevicetype='disk', @backupdevicename='E:\REPDB2.BAK'--最后一次备份的备份文件(发布服务器上的存放位置) GO exec sp_addpushsubscription_agent @publication = N'RepDB2_TB1', @subscriber = N'SQLVM5\SQL2', @subscriber_db = N'RepDB2', @job_login = null, @job_password = null, @subscriber_security_mode = 0, @subscriber_login = N'dba', @subscriber_password = 'dba@123', @frequency_type = 64, @frequency_interval = 0, @frequency_relative_interval = 0, @frequency_recurrence_factor = 0, @frequency_subday = 0, @frequency_subday_interval = 0, @active_start_time_of_day = 0, @active_end_time_of_day = 235959, @active_start_date = 20131028, @active_end_date = 99991231, @enabled_for_syncmgr = N'False', @dts_package_location = N'Distributor' GO
7>检查复制,一切正常
在测试过程中,特地在订阅库上增加部分无关表,复制搭建完毕后,这些无关表依然存在,表明本次操作对这些表无影响。
误区:在讨论备份初始化时,一部分人都认为需要使用备份在订阅上还原,如果订阅库上存在其他数据,则不能使用备份初始化来初始化订阅。
解释:使用备份初始化时为了避免生成快照时对发布库的影响,而在创建订阅时指定备份,只是需要利用该备份来获取一个LSN,使用该LSN来告诉订阅应该从哪个点开始同步数据。
补充:注意在备份初始化前停止发布库日志备份
相关:
http://www.cnblogs.com/TeyGao/p/3521231.html
http://www.cnblogs.com/TeyGao/p/3521234.html