AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 917
Accepted
Greg B
Greg B
Asked: 2011-01-27 08:50:47 +0800 CST2011-01-27 08:50:47 +0800 CST 2011-01-27 08:50:47 +0800 CST

SQL Server 备份策略的优缺点及其合适的使用场景

  • 772

据我所知,有三种可能的方式来备份 SQL Server 数据库

  1. 完全备份
  2. 差异备份
  3. 日志运输

每种策略的优缺点是什么,应该在什么情况下使用它们?

sql-server backup
  • 7 7 个回答
  • 6798 Views

7 个回答

  • Voted
  1. Best Answer
    Mladen Prajdic
    2011-01-27T09:45:40+08:002011-01-27T09:45:40+08:00

    日志传送不是备份方案。这是一个半高可用性方案。
    对于备份,有完整备份、差异备份和事务日志备份。它们都应该一起使用。您的 SLA 决定了您如何使用它们。最典型的场景是在午夜进行完整备份,在中午进行差异备份,以及每 30 或 15 分钟备份一次事务日志。

    请记住:在您从中恢复以测试它是否正常之前,您没有有效的备份。

    • 15
  2. gbn
    2011-01-27T11:02:36+08:002011-01-27T11:02:36+08:00

    可以说没有备份策略这样的概念:您有一个恢复策略,因为这决定了您需要多长时间才能恢复运行*。

    所有策略都需要完整备份,以作为差异和/或日志备份的任何后续还原的基础。

    在实践中,您可以使用 6 个月前的完整备份和 15 分钟的日志备份:但是您必须应用上次完整的每个日志备份。

    作为一个随机示例,一个场景可以是完整的每周,每天的差异,记录 15 分钟。

    备份间隔决定了在最坏的情况下您会丢失多少数据:15 分钟的日志备份会让您在 1 秒到 14 分 59 秒之间丢失数据,平均为 7.5 分钟。这可以接受吗?

    日志传送是带有手动故障转移的热备用:它不是备份,而是一种高可用性选项。

    • 6
  3. Matt M
    2011-01-28T05:42:12+08:002011-01-28T05:42:12+08:00

    没有适合所有情况的策略。但重要的是要了解您可以使用什么。完全备份正是它们听起来的样子:数据库的完全备份,减去事务日志。差异备份是自上次完整备份以来数据文件更改的备份。事务日志备份将备份自上次事务日志备份以来存储在事务日志中的所有事务。事务日志备份将允许您恢复到某个时间点。如果这是必需的,您需要将恢复模式设置为“完整”,并且您需要根据在恢复情况下愿意丢失的数据量定期备份事务日志。

    在处理事务日志备份时,了解什么是日志链很重要。用我的话说,日志链是为了将数据库恢复到给定时间点而需要恢复的一系列备份。为了开始恢复事务日志,您必须首先使用 WITH NORECOVERY 选项恢复完整备份。如果您还执行差异备份,您将希望使用相同的 WITH NORECOVERY 选项恢复您希望恢复到的时间点之前的最新差异备份。此时,您需要在除最终备份之外的所有备份上使用 WITH NORECOVERY 选项按顺序恢复事务日志备份。有关时间点还原的更多信息,请查看此链接。 http://msdn.microsoft.com/en-us/library/ms175093.aspx

    如前所述,日志传送不是一种备份策略,但它可以在发生灾难恢复情况时显着缩短恢复时间。需要注意的一个问题是,任何复制发布都需要编写脚本到日志传送服务器并进行初始化,以便复制能够像灾难之前一样工作。对于较大的出版物,这可能会导致恢复到生产水平所需的时间显着增加。

    希望这可以帮助,

    马特

    • 4
  4. Nomad
    2011-01-27T10:23:03+08:002011-01-27T10:23:03+08:00

    我支持 Mladen Prajdic。本文将帮助您根据数据库的恢复模型选择正确的备份策略。

    • 2
  5. Marian
    2011-01-27T10:23:33+08:002011-01-27T10:23:33+08:00

    这些不是 SQL Server 的备份策略。完全备份和差异备份是您可以对 SQL Server 数据库执行的备份类型,而日志传送是一种高可用性策略(通过在预定时间将日志备份从服务器移动到另一个服务器并使这两个数据库同步到备份的限制)。

    您可以在 MSDN 上找到有关灾难恢复(备份和恢复 :-))的好信息:此处和此处。简而言之,您需要选择在发生故障时可以从备份中恢复多少数据。一个合理的备份策略示例是每天进行一次完整备份,每小时进行一次日志备份(这取决于您的需要),因此在这种情况下,您将能够从完整备份 + 所有每日日志备份中恢复数据库。

    您可以在Simple_Talk上找到有关 DR 的另一个很好的参考。

    • 2
  6. Samuel Druker
    2011-02-01T12:27:32+08:002011-02-01T12:27:32+08:00

    当然,您不仅需要恢复数据库,还需要在数据库所属的服务器和应用程序的上下文中进行恢复。我自己还没有使用过它,但如果您需要, Data Protection Manager看起来会做更全面的工作。

    • 1
  7. Alexandr Omelchenko
    2016-09-10T05:25:20+08:002016-09-10T05:25:20+08:00

    最好的方法是同时使用所有三种备份类型。当然,您可以忽略事务日志备份的差异备份。一切都取决于您的数据库、它的增长速度、您对数据库进行更改的频率等。在选择备份计划之前,请考虑您愿意丢失多少数据?您准备花多少时间来恢复数据库?

    例如,如果您的数据库增长很快,您可以使用以下 SQL Server 备份策略:完全备份 - 每天一次,差异备份 - 每两小时和事务日志备份 - 每 20 分钟。在这种情况下,如果发生故障,您将损失不超过 19 分钟的工作时间。再比如,如果你的数据库增长缓慢,你可以每天做一次完整备份,每六个小时做一次差异备份,每小时做一次事务日志备份。

    另一个提示 - 确保您的数据库安全,不时在测试服务器上恢复您的备份。

    • -1

相关问题

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • Oracle 中的数据库备份 - 导出数据库还是使用其他工具?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve