如果我进行事务日志备份并截断日志文件,我会丢失数据吗?

时间:2019-04-29 08:04:57

标签: sql-server database-administration

我有一个数据库,其LDF文件约为14GB,而MDF文件约为12GB。

没有人为此数据库执行过事务日志备份。

尽管团队始终每天早晨执行完整数据库备份

导致日志文件大小越来越大。

现在,如果我对其事务日志进行备份并截断日志文件。

我会丢失任何数据吗?

我很好奇,因为进行日志备份会减少日志文件的大小,我只想确保它们不会对数据库中的MDF文件或数据产生任何影响。

在进行t-log备份后,有什么好的策略?

我们应该还原它以检查其是否正常运行吗?

如果我还原了t-log备份,是否必须首先在该测试服务器上应用完全备份还原?

[SQL Server 2012]

2 个答案:

答案 0 :(得分:2)

简短的答案是“您不会比平时所遭受的损失更多”。但是,有几种情况可能会影响您的最终决定。

您的团队应该问自己的第一个问题是:“如果我们从不进行日志备份,那么为什么数据库处于完全恢复模式”?对于DEV数据库,在大多数情况下不需要日志备份,因此将其切换为SIMPLE恢复,发出checkpoint,然后可以截断日志。哦,此后它应该不会增长太多,除非有人会在单个事务中运行大型修改批处理。

只需确保您在截断模式之间understand the difference即可。很有可能,您将需要同时使用NOTRUNCATE和TRUNCATEONLY。

是否应定期开始进行日志备份取决于您的工作流程和数据的重要性。完全恢复模式的主要优点是:

  1. 在发生灾难的情况下,您不会丢失在上一次完整/差异备份之后所做的修改,仅在上一次事务日志备份之后所做的修改(如果定期进行,通常会很短,因此对服务器的压力较小) 。但是,如果您的事务日志文件在崩溃中幸免了下来,并且在数据库变得不可用之后能够执行tail-log backup,则您将丢失一无所有
  2. 您可以对数据库执行时间点还原,这有时是一项至关重要的功能-例如,当您调查数据损坏/丢失或进行任何其他此类调查时。但是,正如我所说,开发数据库很少那么珍贵。

因此,请权衡这些选项,考虑一下您的具体情况,然后就会得出答案。如果不是这样,我建议您将注意力转移到dba.stackexchange.com,因为当前形式的问题实际上与开发无关。

答案 1 :(得分:0)

您的数据库恢复模型为full,这意味着sql在获得日志备份之前不要过度写入ldf数据页面,然后对其进行过度写入 之后,除非您有大笔交易,否则日志不会变大 因此,您可以声明一些日志备份作业或将恢复模型更改为简单 当然,完全恢复模式会更好,但是请记住,您应该保留上次完全备份后进行的每个日志备份