使用备份初始化事务复制的问题(事务丢失)

[复制链接]
查看11 | 回复0 | 2012-4-21 10:47:00 | 显示全部楼层 |阅读模式
本帖最后由 wp23 于 2012-4-21 11:31 编辑
环境描述:在城市A有一台数据库服务器A,SQL 2005,数据库大小50GB,(订阅服务器为SQL 2008 )现在想通过复制将数据库远程备份到城市(服务器B),通过带宽为2M的连接。
由于初始化快照通过导致的巨大网络流量和时间,所以考虑通过备份来初始化。
步骤如下:
1.在发布数据库上配置分发,并将sync_type设置为'initialize with backup
2.备份数据库,
3.在分发数据库上配置订阅(发布服务器和分发服务器为同一数据库服务器),脚本如下:
exec sp_addsubscription
@publication = Npublication',
@subscriber ='B',
@destination_db = N'destination_db',
@subscription_type = N'Pull',
@sync_type = N'initialize with backup',
@status='active',
@backupdevicetype='disk',
@backupdevicename='D:\Snapshot\database.bak'
现在问题出现了,由于数据库比较大,而且又必须24小时在线,因此在将备份文件传输到B的途中,服务器A上的数据库不断有读写操作。
等在服务器B上还原数据库创建订阅后进行同步时,会发现在传输备份文件这段时间的事务丢失,一些update,del的事务无法运行。
各位有没办法解决?
追加信息:


1.发布一个数据库Repl,并将sync_type设置为'initialize with backup
此时日志读取代理已经启动,运行sp_browsereplcmds 有一条 “-- INITIALIZE WITH BACKUP”记录
2.在 表中插入记录1,运行sp_browsereplcmds有一条对应记录生成(共计2条记录)
3.备份数据库,在表中插入记录2,运行sp_browsereplcmds有一条对应记录生成(共计3条记录)
4.在分发数据库创建订阅,运行sp_browsereplcmds有多条记录生成,并插入在第一条记录和第二条记录之间。
5.插入记录3,运行sp_browsereplcmds有对应记录生成。
6.在订阅服务器上还原数据库,将同步订阅设置为按需启动,并创建定于,运行sp_browsereplcmds有多条记录生成
7,插入记录4.运行sp_browsereplcmds有对应记录生成。
8。启动订阅同步。
如果一切正常的话,订阅服务器上应该在同步完成后有四条记录,但事实上只有两条记录,1.4
以上步骤不变,只是在订阅服务器上还原数据库之后再先后在发布服务器和订阅服务器上创建定于,结果一样,备份到创建订阅之间事务无法应用。
再次仔细跟踪了整个过程,发现唯一可能出错的地方是在创建备份和还原上,联机文档上注明是:
使用 BACKUP (Transact-SQL) 语句创建发布数据库的备份。
使用 RESTORE (Transact-SQL) 语句还原订阅服务器上的备份。
联机文档说明MSrepl_backup_lsns表包含用于支持分发数据库“sync with backup”选项的事务日志序列号 (LSN),但是我在表中只能看到如下数据,而且MSrepl_commands中的originator_lsn列却为0x00000000000000000000,明显和实际不符。
publisher_database_id valid_xact_id
valid_xact_seqno next_xact_id
next_xact_seqno
1 NULL
NULL NULL
NULL
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行