以零停机时间移动SQL Server数据库

是否有可能移动一个SQL Server 2005数据库到不同的服务器运行SQL Server 2008没有任何停机时间? 该系统是24/7,并且必须被移动到具有不同存储的不同服务器。

我们试图复制数据库,但是这并不能保证整个数据库在过程结束时保持同步。

零停机时间没有。 但是经过仔细的规划,您可以在接近零时间的情况下脱身。

选项1:

  • 安装日志传送btwn现有的2005年和新的2008年服务器。
  • 计划切换小心切换IP和/或主机名。
  • 确保在最终切换之前进行最后的尾部日志备份。

选项2(更多的工作,更less的停机时间):

  • 如果你的2008盒子是新的,那么首先将2005安装到与你的产品相同的盒子里。
  • 在第一阶段安装数据库镜像,以避免性能开销。
  • 设置您的客户端以使连接string中包含故障转移伙伴
  • 更改为将数据库镜像和故障转移同步到新框
  • 请按照“滚动升级步骤”进行数据库镜像设置的2005-2008的就地升级

当然,为了做到这一点,你需要testing并确保你没有错过任何东西,当你真的这样做:)

没有抱歉。 我没有看到没有任何停机时间移动数据库的方法。 在像复活节假期期间,你甚至无法在一个小时内放入数据库?

一个非常复杂的方式来做到这一点(几乎)

  1. P2V将服务器安装到vmware群集上。 没有停机时间。
  2. 创build另一台服务器并创build一个主动/被动群集。
  3. 将被动节点升级到2008并进行故障转移。
  4. 利润?

显然,这里的一切都需要testing,还有很多详细的步骤。

或者 – 让pipe理层同意停机时间,并将其公布给客户。 然后练习和testing升级到死亡!

向pipe理层解释试图做到“便宜”的技术难题。 当你第一次build立一个完整的27×7架构时,这是你build立一个系统的东西。

即使是最大的系统也计划停机。 这是无用的停机时间,你需要担心更多。

事务复制是你的朋友在这里…

如果您将新服务器设置为从服务器,则应该能够启动并运行新的数据库,然后在准备就绪时切换(这里的停机时间最短,我们正在讲话的时间最短,而不是几小时)。 ..你可能需要重新索引一张或三张表,但一旦完成,就完成了。

恐怕你不会单靠SQL Server来实现这一点。 过去我使用过一种名为Double Take的产品,它允许您将DB克隆到另一台服务器,然后在方便时进行故障切换。

在新机器上启动服务时,故障转移过程仍然会导致一些停机。

如果现在只是单个实例/非群集设置,则不会在数据丢失的情况下实现0%的停机时间。 如果数据库主要被读取较多,并且最好丢失一些写入操作,那么把数据库放下,那么你可能有一些select。

您可以对数据库执行COPY_ONLY完全备份,然后在完成后将bak文件移到新的服务器存储中。 将数据库恢复到新的SQL实例,并重新编写连接string(希望这只是一个inc文件),然后重新启动您的站点。 你会在网站上有一个小故障,活动会话将重新启动。

然而。 您将在备份和还原之间丢失所有写入。

您可以尝试使用db镜像解决scheme以最less的停机时间(几秒钟来进行故障切换)达到此目的。 你可以看看这个MSDN文章更多信息: http : //msdn.microsoft.com/en-us/library/bb677181.aspx

汤姆

如果您使用.NET解决scheme作为使用2.0框架的应用程序服务器,则tvanzele的build议应该可以正常工作。 下面的步骤:

  • 确保您的主数据库处于FULL恢复模式,并且正在进行日志备份
  • 安装SQLEXPRESS或标准版SQL实例作为见证服务器
  • 备份和恢复完整备份并将备份logging到新实例(而不是证人)
  • 设置数据库镜像到新的SQL实例,并使用SQLEXPRESS / Standard实例作为见证
  • 更改应用程序中的连接string以识别故障转移服务器,请参阅connectionstrings.com以供参考
  • 通过重新启动旧的实例,将数据库转移到镜像失败
  • 更改应用程序的连接string以仅使用故障转移实例
  • 打破镜像

您可以考虑在两个环境之间为数据库设置同步镜像。 当同步时,数据库可以被故障转移(或返回),只有任何在飞行中的交易中断。

http://sqlserverpedia.com/blog/sql-server-2008/cutover-30-gb-databases-in-60-seconds-with-sql-server-20052008/

我build议你使用Redgate软件来做。 SQL Compare将帮助您在其他服务器中新创build的数据库中重新创build完全相同的结构。 然后使用SQL Compare Data为您创build“复制”脚本并执行它(或稍后保存)。 奇迹般有效。 我用它来复制prod / dev db之间的东西。

这很好,因为你可以做一次Sql Data Compare 。 然后,当它移动了一些数据(并且新的数据到达了旧的数据库),你可以重新运行它,所以它只会在几秒钟内同步差异。

使用SQL Data Compare Pro,您可以比较和同步SQL Server实时数据库与备份,比较两个备份或使用源代码pipe理下的SQL脚本文件夹。 使用命令行界面,您可以自动执行任务并安排比较,以便轻松编辑审计跟踪。

Redgate SQL工具带你的朋友永远(我没有办法与Redgate联系):p

作为一个方面说明。 由于数据是非常大的我会build议使用SQL数据比较来使用块(每个副本的几个表)。 然后再进行最后的同步,以同步复制期间发生的任何差异(即使花了你3个小时,也只需要同步几行的行数)。

我遇到一个名为ChronicDB的产品,声称可以在零宕机的情况下进行迁移。 我不确定他们是否支持SQL Server。

我确实以停机时间结束了。 我采取了“常规”备份/恢复方式,包括最终尾部的事务日志。
我仍然认为,应该有一个开箱即用的方式来做到这一点,没有任何停机时间。