我有点像是新的DBA,并且正在管理一个活动量很大的SQL Server 2012实例。我正在完全恢复模式下运行,因为我们需要时间点恢复。
现在,我每天凌晨5点对数据库和日志进行完整备份。一些日志文件已膨胀到300GB,即使备份后它们也不会减小大小。我可以通过运行类似于以下内容来减小它们的尺寸:
BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn';
DBCC ShrinkFile([db1_log], 0);
BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn';
DBCC ShrinkFile([db1_log], 0);
BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn';
DBCC ShrinkFile([db1_log], 0);
当我检查备份文件的LSN时,会看到类似以下内容的内容:
RESTORE headeronly FROM DISK = N'\\server\share\db1_log1.trn'
FirstLSN: 15781000014686200001
SecondLSN: 15802000000665000001
RESTORE headeronly FROM DISK = N'\\server\share\db1_log2.trn'
FirstLSN: 15802000000665000001
SecondLSN: 15805000000004100001
RESTORE headeronly FROM DISK = N'\\server\share\db1_log3.trn'
FirstLSN: 15805000000004100001
SecondLSN: 15808000000004200001
我不认为我会通过缩小日志文件来破坏日志链。仔细阅读这一内容,我相信我会损害我的表现,因为那些缩小的日志文件必须重新增长。
问题:
- 为什么备份后日志文件没有缩小?是因为有未提交的交易吗?
- 最初,我想在每隔5:00 AM备份后就缩小日志文件。在阅读了这对性能造成的不利影响之后,我现在认为我需要在一天中的每两个小时进行一次常规日志备份。那是对的吗?
- 我的数据库/日志的常规完全备份每天发生在凌晨5:00,有时需要3个小时。如果我将日志备份安排为每小时进行一次,那么当日志备份与5:00 AM备份冲突时会发生什么?