Я дещо новий DBA, і я керую екземпляром SQL Server 2012, який має неабияку активність. Я працюю в режимі повного відновлення, тому що нам потрібен момент відновлення.
Зараз я беру повне резервне копіювання баз даних і журналів щодня о 5 ранку. Деякі файли журналів мають розмір до 300 Гб, і навіть після створення резервної копії вони не зменшуються в розмірі. Я можу змусити їх зменшити розмір, запустивши щось подібне до:
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. Прочитавши, як це погано для продуктивності, тепер я вважаю, що мені потрібно регулярно робити резервні копії журналу кожні пару годин протягом дня. Це правильно?
- Моє звичайне повне резервне копіювання бази даних / журналів відбувається щодня о 5:00 ранку і іноді займає 3 години. Якщо я запланую резервування резервних копій журналу щогодини, що буде, коли резервна копія журналу зіткнеться із резервною копією о 5:00?