【问题标题】:SQL Server backup/restore vs. detach/attachSQL Server 备份/恢复与分离/附加
【发布时间】:2010-10-11 05:46:24
【问题描述】:

我有一个包含最新数据的数据库,我想将数据库内容复制到其他一些服务器中。由于非技术原因,我无法直接使用复制功能或同步功能同步到其他 SQL Server 实例。

现在,我有两个解决方案,我想了解每个解决方案的优缺点。谢谢!

解决方案1:分离包含最新数据的源数据库,然后复制到需要最新数据的目标服务器,并在目标服务器上附加数据库;

方案2:对整个数据库的源服务器进行完整备份,然后将数据复制到目标服务器,并在目标服务器端进行完整恢复。

提前致谢, 乔治

【问题讨论】:

  • 如果目标数据库上的数据发生变化,或者它们基本上是只读的,会发生什么?
  • 只有源数据库有变化。关于哪种解决方案更好的建议?

标签: sql-server backup restore


【解决方案1】:

分离/附加选项通常比执行备份更快,因为它不必创建新文件。因此,从服务器 A 到服务器 B 的时间几乎是纯粹的文件复制时间。

备份/恢复选项允许您执行完整备份、恢复该备份,然后执行差异备份,这意味着您可以减少两者之间的停机时间。

如果您要进行数据复制,这是否意味着您希望数据库在两个位置都能正常工作?在这种情况下,您可能需要备份/恢复选项,因为这将使当前数据库完全正常运行。

编辑:只是为了澄清几点。我所说的停机时间是指,如果您将数据库从一台服务器迁移到另一台服务器,您通常会在传输过程中阻止人们使用它。因此,从服务器 A 上的“停止”点到服务器 B 上的“开始”点,这可以被认为是停机时间。否则,在传输过程中对服务器 A 上的数据库执行的任何操作都不会复制到服务器 B。

关于“创建新文件”。如果分离数据库,您可以立即复制 MDF 文件。它已经准备好被复制了。但是,如果您执行备份,则必须等待创建 .BAK 文件,然后将其移动到新位置以进行还原。同样,这一切都归结为这是快照副本还是迁移。

【讨论】:

  • 两个困惑:1.“它不必创建一个新文件”——你的意思是新文件? 2.“两者之间可以减少停机时间”——为什么会有停机时间?我认为对于使用完整备份和完整恢复模式的 SQL Server,源/目标服务器都没有停机时间?
  • “如果您要进行数据复制,这是否意味着您希望数据库在两个位置都能正常工作?” -- 源服务器和目标服务器都可以承受停机时间,但我希望目标服务器的停机时间尽可能短。关于最佳解决方案的任何新建议?
  • 感谢 Robin,阅读您编辑的 cmets。所以你的意思是.bak文件的新文件?还有一个问题,在使用attach/detach的时候,在源数据库服务器和目的数据库服务器上会不会有事务日志?
  • 按分离... 数据库已脱机。它将不再是服务器 A 的一部分。只有在您附加后,它才会在服务器 B 上可用。我认为您所描述的是在第二台服务器上复制数据库的快照。因此,备份/恢复是要走的路。
  • 这也是可取的,因为如果您进行备份,并且在备份、文件副本和还原之间出现问题,您仍然拥有源副本。如果您分离数据库并且出现问题,那么您完全可以恢复到零个副本。
【解决方案2】:

备份和恢复更有意义,即使您可能会从分离附加选项中多花几分钟时间。您必须在分离之前使原始数据库脱机(断开每个人的连接),然后数据库在您重新连接之前不可用。您还必须跟踪所有文件,而通过备份,所有文件都被分组。并且使用最新版本的 SQL Server 会压缩备份。

只是为了纠正一些问题:数据库备份和差异备份不会截断日志,也不会破坏日志链。

此外,COPY_ONLY 功能仅对差异基数重要,对 LOG 不重要。假设日志链中没有中断,则可以从任何备份开始按顺序应用所有日志备份。存档点略有不同,但我看不出重要的地方。

【讨论】:

    【解决方案3】:

    解决方案 2 是我的选择...主要是因为它不会在源数据库上造成任何停机时间。我能看到的唯一缺点是,根据数据库恢复模型,事务日志将被截断,这意味着如果你想从事务日志中恢复任何数据,你将被塞满,你必须使用你的备份文件。

    编辑:找到一个不错的链接; http://sql-server-performance.com/Community/forums/p/5838/35573.aspx

    【讨论】:

    • 我可以确保在备份源数据库的过程中,没有插入/删除/更新操作,并且在目标数据库上,它一直是只读的(所有修改都在源数据库上)。因此,在我的情况下,源服务器上的两个完整备份都没有事务日志
    • 并在目标服务器上完全恢复?
    • 使用附加/分离时,源数据库服务器或目标数据库服务器上是否都会有任何事务日志?
    • 您还可以执行 COPY_ONLY 备份以防止干扰日志链。
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多