非DBA询问:如何通过备份/还原将SQL Server实例无痛地复制/移动到另一台服务器?


11

我们只有一台新服务器,因此我需要从旧数据库框中复制现有SQL Server 2008实例。

我通常通过复制.mdf和日志文件并附加它们来执行此操作,但是由于它们使用24/7,因此无法脱机,因此我已经备份了数据库并将其还原到新数据库上机。但是,我最终遇到了一些问题,其中一个与孤立用户有关。因此,我要寻找的是一种故障转移过程,以最小的麻烦/痛苦/头痛使一切顺利进行。我是一个.Net开发人员,我掌握了大量SQL,但是SQL Server的内部工作方式在很大程度上对我还是个谜,我发现拖累MS文档很麻烦。

请帮忙。


1
您可以在上一个问题中找到一些想法。但是前面的答案是很解释性的。我认为最好的办法是为所有数据库建立一个镜像并在其后断开它,或者进行日志传送(只能从向导执行),然后进一步还原必要的日志备份,但是如果您不是DBA, ,那么备份方法可能更好。
玛丽安

Answers:


10

如果无法使数据库脱机,则需要执行备份/还原。我建议以下内容:

  1. 使用与用于MDF和LDF文件的旧框相同的文件结构,在新框中安装SQL 2008。
  2. 在旧盒子上备份所有数据库。
  3. 在单用户模式下启动SQL的主服务器从旧服务器还原到新服务器。恢复主方法
  4. 使用NORECOVERY选项将每个数据库从旧框还原到新框,以便能够应用将来的Diff或T-log备份。
  5. 将msdb从旧框还原到新框。

如果您将新盒子构建并配置为与旧盒子完全一样,那么您将大为惊讶。

我不知道您的数据库有多大,因此此方法可能需要很长时间。最简单的操作是关闭旧的盒子并复制MDF和LDF文件,然后(还原主数据库之后)只需重新启动SQL即可使数据库联机。但是您说这不是一个选择,因为不允许数据库脱机。


3
不要忘记复制备份后所做的任何数据更改。您可以进行差异备份或日志备份,然后在启动后但在切换之前将它们应用于新服务器。
埃里克·汉弗莱

好点,我也忘记提及这一点。也许我应该包括一个数据库镜像配置,此后可能会被破坏?
SQLRockstar 2011年

1
我可以想象有人已经有大量有关迁移服务器的不同方式的文章。另外,这是有关将登录名转移到新服务器的文章:support.microsoft.com/kb/246133
Eric Humphrey-lotahelp 2011年

8

您提到了24/7操作,因此最好的方法是在新系统上创建数据库镜像,然后您只需进行最少的切换-可能为零,具体取决于应用程序的结构-使用客户端-侧重定向。基本步骤是:

  1. 确保您的主数据库在完全恢复模式下运行
  2. 备份主数据库并将其还原到镜像上 WITH NORECOVERY
  3. 在两台服务器上创建“端点”,并确保连接性(例如防火墙规则),正确设置端口和IP地址),例如:

    CREATE ENDPOINT endpoint1
    STATE=STARTED AS TCP(LISTENER_PORT = 5222, LISTENER_IP = 192.168.1.5) 
    FOR DATA_MIRRORING(ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE, ENCRYPTION = REQUIRED ALGORITHM RC4)
  4. 在主服务器上设置镜像,指向主服务器:

    ALTER DATABASE GaiusMirrorDB SET PARTNER = 'TCP://192.168.1.5:5222'
    go
    EXEC sys.sp_dbmmonitoraddmonitoring
    go
  5. 在主数据库上,指向镜像(只是一个不同的数据库名称和IP地址。

  6. 然后,当时间到了时,只需将主服务器切换到镜像服务器即可:

    ALTER DATABASE GaiusDB SET PARTNER FAILOVER
    GO

注意:我假设这两个服务器在同一网络上,所以可以在同步模式下运行。如果这是通过WAN链接,请使用异步模式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.