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 / 问题 / 128424
Accepted
Chris Aldrich
Chris Aldrich
Asked: 2016-02-06 09:38:43 +0800 CST2016-02-06 09:38:43 +0800 CST 2016-02-06 09:38:43 +0800 CST

事务日志备份串行还是并行?

  • 772

我们恰好在使用 SQL Server 2012 标准版。我也碰巧使用 Ola Hallengren 的脚本来提供一个简单、更灵活的框架来进行备份和维护。

这个问题与其说是关于 Ola 的脚本,不如说是关于最佳实践。我意识到最终的答案是“这取决于贵公司的要求”。但我正在努力征求社区的建议,以了解如何最好地满足我对公司要求的理解。

我希望每 15 分钟设置一次事务日志备份。这样我们希望丢失不超过 15 分钟的数据。我应该设置一个使用 ALL_DATABASES 的作业吗?还是为每个数据库设置一个作业并并行启动它们更好?我问,因为根据我对 Ola 脚本运行情况的看法,我感觉备份是连续启动的。串行的缺点是每个连续的备份都要等到另一个备份完成。这可能会增加备份之间的时间量(即大于 15 分钟)。另外,我担心的是一个备份失败会阻止其他备份发生,我不希望出现这种情况。我希望其他人继续支持。

那么,Ola 的脚本是串行执行的,并且失败会停止连续备份,这是真的吗?

每个数据库都有一份工作更好吗?还是一项工作就可以完成所有工作?我倾向于独立的工作,但我希望了解 SQL Server DBA 通常倾向于做什么。

sql-server backup
  • 3 3 个回答
  • 827 Views

3 个回答

  • Voted
  1. Best Answer
    Shanky
    2016-02-06T20:59:25+08:002016-02-06T20:59:25+08:00

    我应该设置一个使用 ALL_DATABASES 的作业吗?还是为每个数据库设置一个作业并并行启动它们更好?

    我建议设置一个备份事务日志的作业(串行)。这也将确保备份不会大量使用 I/O,因为您一次运行一个数据库的备份。

    并行运行可能有什么缺点

    1. 假设您有 50 个数据库,并且您安排了所有数据库的事务日志备份,并且它们都开始并行运行,这肯定会使用大量 I/O。如果它正在备份文件的磁盘恰好有其他数据文件,您会发现速度很慢。当请求大量 I/O 的糟糕查询与备份作业一起运行时,我已经看到备份变慢了。

    2. 再次假设您有 50 个数据库,在 SQL Server 代理中管理 50 个作业会不会很困难,如果您有 100-200 个数据库,我只是不喜欢它,当您打开 SQL Server 代理并看到很多作业时,保持简单。我相信你也会遇到同样的情况。

    串行的缺点是每个连续的备份都要等到另一个备份完成。这可能会增加备份之间的时间量(即大于 15 分钟)。

    事务日志备份大多很小,如果您有一个繁忙的数据库产生大量日志记录,您可能需要更改备份频率。大多数情况下,我看到事务日志备份在频率为 15 分钟时完成得很好。我认为你不应该关心这个问题。

    另外我担心的是一个备份失败会阻止其他备份发生,我不希望出现这种情况

    我会说别担心。事务日志备份不会失败,除非你犯了一些错误。错误可以是

    1. 运行该作业的所有者已从 AD 中删除

    2. 有人改变了数据库的恢复模式。

    3. 磁盘空间不足

    除了上述之外,我还没有看到事务日志备份失败的任何原因。它非常坚固,您可以信赖它。

    • 6
  2. Anti-weakpasswords
    2016-02-07T09:21:51+08:002016-02-07T09:21:51+08:00

    通常,始终串行运行 T-log 备份;我的许多实例都有几十个数据库,其中有几个非常活跃,事务日志备份总共只需要几秒钟;特别忙的时候最多半分钟左右。

    如果满足以下所有条件,则仅并行运行备份确实是有益的:

    • 您的数据库和日志文件都在唯一的独立轴上(或以任意组合在固态磁盘上)

      • 对于仅 T-log 备份,只有日志文件需要满足此要求。
    • 每个数据库的备份目标位于不同的轴上。

    • 您没有在 SQL Server 实例和媒体之间使用共享的 SAN HBA 或 iSCSI 或其他带宽。

    • 即读取数据库 A 和写入备份 A 的 IOPS不要使用与读取数据库 B 和写入备份 B 相同的磁盘。

    如果所有这些都是真的,那么某种程度的并行性可能会减少总日历时间。如果所有这些都不是真的,您很可能会导致一组或多组磁盘发生抖动,并且您的并行备份实际上将比串行备份花费更多的日历时间,但也可能导致操作系统文件系统或存储级别碎片化,因为您正在同时编写备份 A 和备份 B!

    不要担心一个备份失败而其余备份成功 - 如果任何一个失败,您无论如何都需要检查所有内容,我唯一看到备份失败的原因是:

    • 磁盘故障

    • Hyperbac/Litespeed/第三方压缩软件故障(如果你有SQL和故障磁盘之间的软件)

      • 作为警告,故障可能会以永远不会完成的备份作业的形式出现,因此对发送警报的“运行时间超过预期的作业”进行一些检查是很有价值的。
    • 加密产品故障(如果您在 SQL 和故障磁盘之间有软件)

    • 网络故障(如果数据库文件,或者更可能是备份文件,在网络上)

    • 权限

      • 最常见于全新安装

      • 或全新的备份位置

      • 更改 SQL Server 服务用户(这是正常备份需要权限的用户)

      • 锁定 SQL Server 服务用户,因为它被不止一个 SQL Server 实例使用

    • 配置错误

    • 电源(检测)失败

    • 操作系统崩溃

    除非同时满足上述条件,否则其中大部分不会影响一个而不影响其他。

    • 6
  3. rvsc48
    2016-02-20T05:54:22+08:002016-02-20T05:54:22+08:00

    补充一下,Ola 设计了他的脚本,如果一个数据库备份由于某种原因失败,将尝试下一个。如前所述,您可以设置警报以通知您作业失败,因为备份作业仍然会失败,即使所有用户数据库中只有一个数据库备份失败 - 假设您正在备份所有数据库(一个所有人的工作)。

    • 2

相关问题

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

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

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

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

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

Sidebar

Stats

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

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

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

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +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

热门标签

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