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 / 问题 / 140539
Accepted
Mathieu Guindon
Mathieu Guindon
Asked: 2016-06-07 09:00:40 +0800 CST2016-06-07 09:00:40 +0800 CST 2016-06-07 09:00:40 +0800 CST

按计划备份和截断事务日志的最佳方法

  • 772

我不是 DBA,但事情就是这样,我必须戴上 DBA 的帽子并在我的 SQL Server 实例上设置维护计划。

所以一段时间以来,我一直让我的 SSIS 通宵进程运行Execute SQL Task来执行备份 - 基本上是运行master.dbo.xp_create_subdir以确保目标文件夹存在,然后BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT.

每当该任务失败时,该过程的其余部分将中止,并且我会收到通知,并在第二天早上注意到事务日志的驱动器已满载,因此我将手动截断它们并继续前进。 ..直到故事重演并且事务日志再次超出可用磁盘空间。

“手动截断”脚本如下所示:

use Staging;
alter database Staging set recovery simple
alter database Staging set recovery full
dbcc shrinkfile ('Staging_log', 0, truncateonly);
go

所以我越来越厌倦了,我决定尝试正确地做事,并按照这里的步骤创建一个实际的维护计划:

SQL Server 维护计划

问题是,我以前从未这样做过,所以我有几个问题:

  • 像这样备份事务日志会自动截断它们,还是我需要做其他事情?
  • 可以同时运行数据和事务日志备份吗?如果没有,那么这样做的正确方法是什么?
  • 备份文件被另一个进程在一夜之间获取,该进程抓取服务器上的所有文件并将它们存储在其他地方 - 将备份集在 2 天后过期是个好主意吗?我需要让它们过期吗?
  • 清理任务分别删除 .bak 和 .trn 子文件夹下的“旧”文件G:\Backups。那有意义吗?
  • 在 SSIS 中执行此操作会更好,因此如果/当备份失败时我可以使 ETL 失败?或者我的 ETL 过程是否应该关心?

抱歉,如果一篇文章的问题太多了,如果需要,我会编辑并提出多个问题 - 我认为它们都是紧密相关的。

sql-server backup
  • 1 1 个回答
  • 27087 Views

1 个回答

  • Voted
  1. Best Answer
    Kin Shah
    2016-06-07T11:30:47+08:002016-06-07T11:30:47+08:00

    只有夜间 SSIS 正在写入,白天都是读取 - 我只需要每天恢复。

    您应该根据您的业务需求选择您的恢复模式:

    • 有多少数据业务可以在松散的同时存活下来?

    基于以上答案,您应该谨慎选择您的数据库恢复模式。

    简单来说(不讨论批量日志恢复模型),

    • 完整恢复模式允许日志备份,允许时间点恢复。
      • 当您进行事务日志备份时可能会发生日志截断,即日志文件空间将在每次日志备份后重复使用并且不会膨胀!
    • 简单恢复模式仅允许您进行完整备份。时间点恢复是不可能的。
      • 日志截断只能在检查点发生(手动或自动)时发生,即由于您定期进行完整备份,您不必担心事务日志,因为 CHECKPOINT 将负责重用日志文件的非活动部分。

    请记住,日志截断不是事务日志文件大小的物理减小,这意味着事务日志文件的非活动部分被标记为可重用。

    因此,您应该正确地调整您的事务日志文件(和数据文件)的大小。增长日志文件将引发自动增长事件(如果您的数据库设置为自动增长作为最后的手段)。检查我的答案 -自动增长 - 使用百分比?


    我强烈建议您放弃维护计划并实施 [智能维护解决方案 - 简单、灵活并遵循最佳实践] - 5。- Ola 的备份解决方案(以及索引维护解决方案)。


    让我们解决您的问题:

    像这样备份事务日志会自动截断它们,还是我需要做其他事情?

    请不要附加备份或将它们设置为过期。他们制造了一个大混乱。使用INIT并使用带有日期时间戳的单独日志备份。易于维护。为此,请使用 Ola 的备份解决方案。该解决方案也可以灵活地删除旧备份。

    可以同时运行数据和事务日志备份吗?如果没有,那么这样做的正确方法是什么?

    完整备份对 T-log 备份没有影响。完整备份仅包含足够的必要事务日志,以便在还原的情况下,数据库可以在事务上与完整备份的数据读取部分完成的时间保持一致。检查 -完整备份包含多少事务日志?

    此外,完整备份期间的日志备份不会截断事务日志。完整备份完成后的(几个)日志备份将截断日志。

    备份文件被另一个进程在一夜之间获取,该进程抓取服务器上的所有文件并将它们存储在其他地方 - 将备份集在 2 天后过期是个好主意吗?我需要让它们过期吗?

    清理任务分别删除 G:\Backups 子文件夹下的“旧”.bak 和 .trn 文件。那有意义吗?在 SSIS 中执行此操作会更好,因此如果/当备份失败时我可以使 ETL 失败?或者我的 ETL 过程是否应该关心?

    对于以上两者,请使用 Ola 的备份维护解决方案。它将负责删除旧文件。

    • 8

相关问题

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

  • 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