it-swarm-id.com

SQL Server (2005/2008): Apakah cadangan penuh memotong log dalam mode pemulihan penuh

Saya baru saja membaca banyak dokumentasi MSDN dan saya pikir saya mengerti model pemulihan yang berbeda dan konsep rantai cadangan. Saya masih punya satu pertanyaan:

Apakah cadangan database lengkap memotong log transaksi (menggunakan mode pemulihan penuh)?

  • Jika ya: Di mana ini disebutkan dalam MSDN? Yang bisa saya temukan adalah bahwa hanya LOG CADANGAN yang memotong log.

  • Jika tidak: Mengapa? Karena cadangan basis data penuh memulai rantai cadangan baru, apa gunanya menjaga transaksi yang diselesaikan sebelumnya cadangan penuh aktif di log?

41
Heinzi

Tidak - sudah pasti tidak. The satunya hal yang memungkinkan log untuk menghapus/memotong dalam model pemulihan LENGKAP atau BULK_LOGGED adalah cadangan log - tidak ada pengecualian. Saya memiliki argumen ini beberapa waktu lalu dan memposting posting blog yang panjang dan terperinci dengan penjelasan dan skrip yang dapat Anda gunakan untuk membuktikannya kepada diri sendiri di Kesalahpahaman tentang log dan cadangan log: bagaimana meyakinkan diri sendiri .

Jangan ragu untuk menindaklanjuti dengan lebih banyak pertanyaan. Btw - juga lihat artikel panjang yang saya tulis untuk Majalah TechNet pada Memahami Logging dan Pemulihan di SQL Server .

Terima kasih

43
Paul Randal

Cadangan lengkap TIDAK memotong log, Anda harus melakukan operasi log cadangan. Cadangan penuh TIDAK mengatur ulang rantai log - yang akan benar-benar mengacaukan replikasi/pengiriman log, dll.

Anda harus melihat dari dekat bagaimana SQL Server melakukan backup tetapi tahu bahwa transaksi dalam penerbangan/berjalan lama tidak termasuk dalam cadangan (jika tidak, cadangan mungkin tidak pernah lengkap) sehingga tidak cukup akurat untuk mengatakan bahwa cadangan penuh dari suatu database online dijamin membuat cadangan log berikutnya menjadi usang.

http://msdn.Microsoft.com/en-us/library/ms175477.aspx

13
Matt Rogish

Dari pemahaman saya satu-satunya hal yang memotong log transaksi adalah cadangan log .

Cadangan lengkap hanya menyalin cukup dari log sehingga konsisten secara transaksi, karena perlu beberapa saat agar operasi pencadangan selesai & pada waktu itu, halaman yang disalin mungkin telah berubah.

Anda masih membutuhkan cadangan log untuk pemulihan waktu secara tepat waktu.

Saya tidak memiliki MSDN untuk ditautkan, tetapi saya dapat menautkan Anda ke blog Paul Randal , yang merupakan pengembang di tim SQL Server, menulis DBCC CHECKDB dan bagian-bagian dari Buku Daring.

Dia juga menjawab pertanyaan di forum ini, sehingga itu akan menjadi otoritas yang lebih baik daripada informasi tangan ke-2/ke-3 dari saya :)

8
Nick Kavadias

Orang sering memiliki kesalahpahaman tentang cadangan lengkap dan cadangan log. Agar cadangan berfungsi dalam FULL model pemulihan cadangan, t-log harus digunakan, karena selama cadangan mungkin masih ada transaksi yang terjadi di dalam basis data (kecuali jika Anda melakukan apa yang disebut COLD backup ketika Anda mematikan database). Oracle menggunakan konsep yang sama ketika Anda memiliki database dalam mode ARCHIVELOG. Urutan cadangan bermuara di bawah ini:

  1. Mulai pencadangan - menangguhkan semua tindakan dalam file nyata dan menulis ke t-log.
  2. Lakukan pencadangan - semua transaksi berlanjut, tetapi tidak ditulis ke file nyata, itu ditulis ke dalam log-t
  3. End backup - melanjutkan penulisan transaksi basis data ke file nyata.
  4. Jika perlu siram apa yang ada di T-log ke file yang sebenarnya.

Itulah alasan mengapa log-t tidak secara default terpotong/menyusut, karena mereka adalah bagian penting dari kelanjutan transaksi selama fase cadangan.

5
Peter

Jangan bingung memotong log dengan menyusutkan log.

  • Untuk TRUNCATE adalah untuk menghapus transaksi dalam log yang sebelum pos pemeriksaan terakhir, (pos pemeriksaan adalah ketika transaksi memerah ke database itu sendiri). Ini dilakukan dengan menggunakan perintah CADANGAN.

  • Untuk SHRINK log adalah untuk mengurangi ukuran file log yang sebenarnya. Ini dilakukan dengan menggunakan perintah DBCC.

1
Lee Matthews

Pada dasarnya Anda tidak perlu membuat penyusutan log transaksi secara otomatis setiap kali karena log transaksi membutuhkan ruang untuk bekerja dan jika Anda memotong secara otomatis, log itu akan tetap berukuran hampir sama.

1
zz