如果你能负担得起几个小时的离线时间,我会看看rsync
. 如果您使用 Windows 系统,您可以获得一个发行版cygwin
并安装它,包括rsync
和ssh
.
我首先要做的是尝试尽可能准确地计算所需的估计离线时间。为了那个原因:
您必须cygwin
在源机器和目标机器上进行设置并配置 SSH(有一个脚本可以为您完成几乎所有工作,名为ssh-host-config
)。您需要确保可以通过 SSH 从源服务器连接到目标服务器。
首次将整个数据库备份文件复制.BAK
到目标服务器。为方便起见,您第一次可以将 DB 备份文件压缩并拆分成更小的部分。一旦你第一次有了数据库备份文件,就不要再压缩源数据库备份文件了。
编写一个任务来每天rsync
备份数据库文件。您可能需要配置 SSH 以无需密码(通过使用密钥)连接到目标服务器,在这种情况下,请查看这里的摘要和详细信息。
一旦您实现了一个稳定的过程,请检查数据并尝试计算在迁移当天将传输的字节量。
使用估计的字节数和上传/下载带宽速率,您应该能够得出所需时间的估计值。
我做出以下假设:
- 数据库为 260 GB,但我希望几乎所有数据都是静态的。
- 您可以对数据库执行每日(完整)备份。
- 系统处于离线状态,一旦最终数据库备份过程开始,将没有待回滚/提交的待处理事务。
注意不是rsyncldf
或mdf
文件在线,而是完整备份文件。说,考虑到这个其他DBA 线程。
在上面提到的所有注释和评论之后,让我补充一点,去年我们面临与您相同的任务,使用较小的数据库,但在检查了其他可能性之后,我们最终完成了rsync
,当然是在测试了所有步骤之后并预先测试并非常准确地知道所需的时间。
您的数据库很大,所以我不确定这种方法是否最适合您。