Saya agak DBA baru dan saya mengelola contoh SQL Server 2012 yang memiliki cukup banyak aktivitas. Saya menjalankan dalam mode Pemulihan Penuh karena kami membutuhkan pemulihan waktu.
Saat ini, saya mengambil cadangan penuh dari database dan log setiap hari jam 5 pagi. Beberapa file log telah menggelembung hingga 300 GB dan bahkan setelah mengambil cadangan, ukurannya tidak berkurang. Saya bisa membuat mereka mengurangi ukuran dengan menjalankan sesuatu yang mirip dengan:
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);
Ketika saya memeriksa LSN file cadangan saya melihat sesuatu seperti:
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
Saya tidak percaya saya memutus rantai log saya dengan menyusutkan file log. Membaca ini, saya yakin saya merusak kinerja saya karena file-file log menyusut harus tumbuh kembali sendiri.
Pertanyaan:
- Mengapa file log tidak menyusut setelah cadangan saya? Apakah karena ada transaksi yang tidak terikat?
- Pada awalnya saya berpikir saya harus mengecilkan file log setelah setiap cadangan 5:00 pagi. Setelah membaca tentang bagaimana itu buruk untuk kinerja saya sekarang percaya bahwa saya perlu mengambil cadangan log reguler setiap beberapa jam di siang hari. Apakah itu benar?
- Cadangan penuh normal saya untuk database / log terjadi setiap hari pada jam 5:00 pagi dan kadang-kadang memakan waktu 3 jam. Jika saya menjadwalkan pencadangan log terjadi setiap jam, apa yang akan terjadi ketika cadangan log bertabrakan dengan cadangan 5:00 AM?