【问题标题】:Getting a new database server to replace old one with same data across two geological locations获取一个新的数据库服务器,用跨两个地理位置的相同数据替换旧的数据库服务器
【发布时间】:2012-08-21 22:08:40
【问题描述】:

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

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

【问题讨论】:

  • 您在这两个地方的上传/下载带宽能力如何?贵公司有多少时间可以离线?
  • 我们可以采取的离线时间约为 5-6 小时。两台服务器都是 sql 2008 r2。

标签: database replication maintenance mirroring


【解决方案1】:

如果您有足够的时间离线,我会看看 rsync。如果您使用 Windows 系统,您可以获得 cygwin 的发行版并安装它,包括 rsync and ssh 的软件包。

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

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

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

  3. 将任务编入每日rsync 数据库备份文件。您可能需要配置 SSH 以连接到目标服务器没有密码(通过使用密钥),在这种情况下,请查看 here in summaryhere in details

  4. 一旦您实现了稳定的流程,请检查数据并尝试计算迁移当天将传输的字节数。

  5. 根据估计的字节数和上传/下载带宽速率,您应该能够得出所需时间的估计值。

我做出以下假设:

  • 数据库为 260 GB,但我希望几乎所有数据都是静态的。
  • 您可以对数据库执行每日(完整)备份。
  • 系统处于脱机状态,一旦最终数据库备份过程开始,将没有待回滚/提交的待处理事务。

注意这不是为了 rsync ldfmdf 在线文件,而是完整备份文件。说了这么多,考虑到这个其他DBA thread

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回复,是的,他们需要通过互联网连接。我们是否有任何其他标准方法假设它们可以通过互联网连接?
    • 你的意思是除了复制吗?复制专为这种情况而设计,您需要两个数据库,它们在某种程度上是彼此的镜像。我肯定会考虑通过复制来实现您的目标 - 复制有三种类型 - 合并、事务和快照。快照获取数据库的快照并将其镜像到目标服务器上(所有复制都以快照复制开始)。由于您的数据库非常大,我会根据服务器之间的网络有多好来查看合并复制甚至事务。
    • 在合并复制中,我读到,如果它没有找到已经存在的 rowguid 列,它将额外添加 rowguid 列。当我让这个数据库上线时,这不是一个问题吗?
    • 不,这不是问题。它是一个额外的列,因此合并复制“知道”要合并什么。事实上,一旦您只使用新服务器,并且确定您不需要再次打开旧数据库,您实际上可以删除该列。但离开它也不应该有任何害处。
    猜你喜欢
    • 2010-12-02
    • 2014-01-03
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多