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
    • 最新
    • 标签
主页 / server / 问题 / 813646
Accepted
user2629636
user2629636
Asked: 2016-11-08 10:37:49 +0800 CST2016-11-08 10:37:49 +0800 CST 2016-11-08 10:37:49 +0800 CST

SQL 2012 事务日志备份不会截断日志

  • 772

我是数据库管理的初学者,所以请耐心等待。我有一个 500MB 的小型 DB 和一个非常大的事务日志 (19GB)。我想把它保持在“完全恢复”模式,所以请不要建议“简单”恢复模式。

我一直在研究如何减少事务日志的大小,我正在尝试实施这些建议,但日志大小没有改变。

首先,我的工作是:我有一个每日备份任务,在维护计划中备份所有数据库。这是一种“完整”备份类型,并且似乎运行良好。我看到每天备份一个文件,类似于数据库本身的大小。

现在我有了完整备份,我继续进行手动“事务日志”类型的备份,其中包含“截断事务日志”选项。

备份在几秒钟内完成,创建一个大小为几兆字节的文件,但事务日志的大小保持不变。

我究竟做错了什么?

sql-server database-backup sql-server-2012
  • 2 2 个回答
  • 11817 Views

2 个回答

  • Voted
  1. Best Answer
    Katherine Villyard
    2016-11-08T10:50:52+08:002016-11-08T10:50:52+08:00

    您的事务日志备份正在截断日志,因为它在现有日志文件中为更多事务腾出空间。如果要收缩日志文件,需要在 SSMS 中选择“收缩文件”选项。右键单击数据库以找到该选项。 如果你缩小到的文件大小不够大,根据你的数据库有多少事务以及你备份日志的频率,它会再次增长。您可能需要更频繁地运行日志备份以防止这种情况发生。
    MS SQL Server Management Studio 收缩文件 MS SQL Server Management Studio 收缩日志文件

    听起来您根本没有运行事务日志备份(除了您手动运行的一次)。如果是这样,这不仅是您的事务日志增长的原因,而且无论如何您都没有获得完全恢复的好处。请安排定期事务日志备份。(每小时将是一个好的开始。)

    • 5
  2. JayBay2279
    2016-11-09T00:18:01+08:002016-11-09T00:18:01+08:00

    好的,首先要了解的是为什么日志文件是它的大小。你说数据是 500MB 你确定吗?与日志文件相比,这是一个非常小的数据文件。如果这是真的,那么日志就是它的大小是有原因的。

    所以你必须弄清楚为什么......你一直在将数据运行到数据库中吗?是否有任何 ETL/DTS 进程在其中运行数据、重建索引等以及正在运行的大型事务?你检查过没有未提交的交易吗?(选择@@trancount)

    您可以通过检查 log_reuse_wait 和 log_reuse_wait_desc 来检查 Log 的当前状态。

    SELECT [log_reuse_wait_desc] FROM [master].[sys].[databases] WHERE [name] = N'Company';

    在日志备份中捕获其所有日志记录之前,不能截断日志的非活动部分。这是维护日志链所需要的一系列日志记录,这些记录具有完整的日志序列号 (LSN) 序列。备份事务日志时会截断日志,假设存在以下情况:

    1.自上次备份日志以来发生了检查点。检查点对于在完整恢复模式或大容量日志恢复模式下截断日志是必不可少的,但还不够。在一个检查点之后,日志至少在下一次事务日志备份之前保持不变。

    2.没有其他因素阻止日志事务。

    通常,通过定期备份,日志空间会定期释放以供将来使用。但是,各种因素(例如长时间运行的事务)可能会暂时阻止日志截断。

    BACKUP LOG 语句未指定 WITH COPY_ONLY。

    来源:https ://technet.microsoft.com/en-us/library/ms189085(v=sql.105).aspx

    如果日志文件确实需要那个大小并且你缩小它,它只会再次增长,这本身就是一个代价高昂的过程,因为数据库正在写入日志并且需要文件增长,除非你有即时文件初始化对于 sql server 服务帐户,该进程将等待文件增长然后写入,如果对 GB 块执行此操作,您将有更大的问题需要处理。

    因此,现在您需要查看数据库的活动,例如,如果您每天只运行一个日志备份,这对于数据库的活动可能还不够,在我的组织中,我每 15 分钟到每 1 小时进行一次备份在某些情况下,每 5 分钟在特定的 Db 上。这允许日志不会增长太多(日志已在某些服务器中预先调整大小)我们也在运行严格的 RTO/RPO。

    现在正如 joeqwerty 所说,除非您在该框上对恢复点有严格的 SLA,否则它可能不值得以 FULL 或 BULK-Logged 运行,如果您所做的只是每天运行 FULL 备份和公司不在乎数据丢失,不要与之抗争,使用它。

    如果您只关心日志的大小,而不关心转录点恢复,请备份日志并缩小它,然后切换到 Simple。

    你说不建议简单恢复,但我认为你并不完全理解你在用完全恢复做什么。

    • 1

相关问题

  • sql server 连接字符串上的网络数据包大小以提高吞吐量

  • 基于 Microsoft 的服务器(IIS、MSSQL 等)上的病毒扫描应排除哪些内容?

  • SQL 洗衣清单

  • OPENROWSET、二进制文件、varchars 和 varbinaries

  • 聚集索引与非聚集索引?

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve