我们正在停用旧的 SQL Server 2000 Ent。支持 SQL Server 2008 R2 Ent 的实例。我计划的迁移路径是:
- 终止客户端连接 (2000)
- 完整备份 (2000)
- 还原 (2008 R2)
我被要求提供确凿的证据,证明每笔交易都“成功”,并且数据是 2000 实例上存在的数据的精确复制。
我希望我可以使用以下文档作为证据:
但是,如果这还不够,我唯一能想到的就是遍历每个数据库的每个表的每一行并计算校验和(在两个实例上)以及获取每个数据库中每个表的行数。
有没有更好的方法来满足“精确副本”验证标准?我也愿意接受更好的文档。
当您备份数据库时,源上的最后一个LSN将是 X。如果将发生任何活动(例如,包括自动检查点),源 LSN 将前进到 X+n。如果源上发生了任何活动但未在备份中捕获,它将在源日志中留下印记,位于 LSN X 和 X+n 之间的某个位置。使用
fn_dblog
一个可以查看日志并查看是否发生了任何此类活动。确保备份后不发生此类活动的一种简单方法是在备份后立即将数据库设置为 read_only。为了防止在备份和更改为 read_only 之间发生任何活动,您可以禁用连接或将数据库设置为单用户模式,甚至以单用户模式启动服务器。
所以像下面这样的过程应该非常安全:
-m
)我会说:
假设在备份过程中和之后源计算机上没有发生任何事务,我看不出新服务器上怎么可能会丢失事务。
为了证明,你唯一能做的就是比较源数据库和目标数据库中的数据;然而,这完全是矫枉过正,因为备份和验证将完全做到这一点。
有很多方法可以做到这一点。
一个。从 2000 实例备份并在 2008R2 实例上恢复它。这将需要您的应用程序停机,直到您将备份成功还原到 2008R2 实例。
此外,您必须终止与 2000 实例的所有连接,因为您不想丢失数据。
b. 设置从 2000 到 2008R2 的日志传送。故障转移时,您只需在辅助 (2008R2) 实例上进行尾部日志备份和还原,然后使数据库联机。
选项 b 将需要更少的停机时间。
编辑 :
您可以在 SQL 2000 和 SQL 2005/2008R2 之间进行日志传送。但是您不能在待机模式下保持辅助。
有关在 SQL 2000 上实施日志传送的一些参考资料。请注意,这也适用于设置从 2000 到 2005/2008/2008R2 的日志传送。
实施日志传送
将 SQL Server 2000 日志传送配置迁移到 SQL Server 2008
自定义日志传送
使用 Powershell 进行日志传送