Database 获取新的数据库服务器以在两个地理位置使用相同的数据替换旧的数据库服务器

Database 获取新的数据库服务器以在两个地理位置使用相同的数据替换旧的数据库服务器,database,replication,maintenance,mirroring,Database,Replication,Maintenance,Mirroring,我在这里面临一种情况,我需要专家的帮助,这种情况是我们公司想将数据库服务器运送到另一个地方,所以他们安装了一个新的服务器并对其进行测试,然后将其运送到目的地,将旧服务器关闭,使新服务器上线。问题是我们已经配置了服务器,但是找不到一个计划,在这个计划中我们可以有一个最小的停机时间,并让第二个数据库包含主服务器中的所有数据。另一个痛点是,这两个将不会在单个网络中连接。因此,我们的数据库是260 GB,不能从一台服务器移动到另一台服务器。甚至在我们将新服务器移动到目的地并准备好上线之前,我们也无法停止

我在这里面临一种情况,我需要专家的帮助,这种情况是我们公司想将数据库服务器运送到另一个地方,所以他们安装了一个新的服务器并对其进行测试,然后将其运送到目的地,将旧服务器关闭,使新服务器上线。问题是我们已经配置了服务器,但是找不到一个计划,在这个计划中我们可以有一个最小的停机时间,并让第二个数据库包含主服务器中的所有数据。另一个痛点是,这两个将不会在单个网络中连接。因此,我们的数据库是260 GB,不能从一台服务器移动到另一台服务器。甚至在我们将新服务器移动到目的地并准备好上线之前,我们也无法停止工作


不知何故,我们需要在服务器移动到目标后同步数据库。请帮助。

您可以设置新的数据库服务器。然后备份现有数据库并在新服务器上还原。然后使用合并复制将数据从现有数据库复制到新数据库。当然,这是假设现有的数据库服务器将能够连接到新的数据库服务器(即使是通过internet)。
如果您根本无法通过网络进行连接,那么您将不得不面对这样一个事实:将有一些停机时间。在这种情况下,您需要将备份恢复到新服务器上,这当然是一个完整备份。将数据库还原到新服务器后,请返回旧服务器并进行差异备份和事务日志备份。然后,您需要关闭旧服务器(以便在恢复时不会发生任何事务),然后将这两个较小的数据库备份恢复到新服务器上,这样就可以了

如果你有时间离线,我想看看。如果您使用Windows系统,您可以获得发行版,并安装它,包括的软件包

我首先要做的是,尽可能精确地计算估计的离线时间。为此:

  • 您必须在源计算机和目标计算机中设置
    cygwin
    ,并配置SSH(有一个名为
    SSH-host-config
    的脚本可以为您完成几乎所有的工作)。您需要确保可以通过SSH从源服务器连接到目标服务器

  • 第一次将整个数据库备份文件
    .BAK
    复制到目标服务器。这是第一次,为了方便起见,您可以将DB备份文件压缩并拆分为更小的部分。一旦第一次有了数据库备份文件,就不要再压缩源数据库备份文件

  • 将任务编程为每日
    rsync
    数据库备份文件。您可能需要将SSH配置为无需密码(通过使用密钥)即可连接到目标服务器,在这种情况下,请查看,然后

  • 一旦实现了一个稳定的过程,请检查数据并尝试计算迁移期间将传输的字节数

  • 通过估计字节数和上载/下载带宽速率,您应该能够得出所需时间的估计值

  • 我做出以下假设:

    • 数据库是260 GB,但我希望,几乎所有的数据都是静态的
    • 您可以对数据库执行每日(完整)备份
    • 系统处于脱机状态,一旦启动最终数据库备份过程,将不会有待回滚/提交的挂起事务
    注意这不是为了在线同步
    ldf
    mdf
    文件,而是完整备份文件。他说,要考虑到这一点

    在所有上述的注释和评论之后,让我补充一点,去年我们面临着与您相同的任务,使用较小的db,但在检查了其他可能性之后,我们最终使用
    rsync
    ,当然是在对所有步骤进行了测试和测试,并提前非常准确地知道所需的时间之后


    您的数据库很大,所以我不确定这种方法是否最适合您。

    那么您在这两个地方的上传/下载带宽功能如何?您的公司能够承受多少离线时间?我们可以花费大约5-6小时的离线时间。这两台服务器都是sql 2008 r2。感谢您的回复,是的,它们需要通过internet连接。假设可以通过internet连接,我们还有其他标准方法吗?你是说除了复制之外?复制就是为这种情况而设计的,在这种情况下,您需要两个数据库,它们在某种程度上是彼此的镜像。我肯定会考虑使用复制来实现您的目标—有三种类型的复制—合并、事务和快照。快照获取数据库的快照并在目标服务器上镜像它(所有复制都从快照复制开始)。由于您的数据库相当大,我会根据服务器之间的网络状况来查看合并复制,甚至是事务性的。在合并复制中,我了解到,如果它没有发现已经存在的rowguid列,它会额外添加rowguid列。当我让这个数据库运行时,这不是一个问题吗?不,这不会是一个问题。它是一个额外的列,以便合并复制“知道”要合并的内容。事实上,一旦您只使用新服务器,并且确信不需要再次打开旧数据库,就可以删除该列。但离开它也不会有什么害处。