Saya bukan DBA, tetapi karena semuanya itu, saya harus memakai topi DBA dan mengatur rencana pemeliharaan pada instance SQL Server saya.
Jadi untuk sementara saya sudah memiliki proses semalam SSIS saya menjalankan Tugas SQL Execute untuk melakukan backup - pada dasarnya berjalan master.dbo.xp_create_subdir
untuk memastikan folder tujuan ada, dan kemudian BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT
.
Setiap kali tugas itu gagal, sisa proses akan dibatalkan dan saya akan menerima pemberitahuan, dan datang keesokan paginya untuk melihat drive untuk log transaksi terisi penuh, jadi saya secara manual memotongnya dan melanjutkan. .. sampai cerita terulang kembali dan log transaksi lebih besar dari ruang disk yang tersedia.
Skrip "truncate manual" terlihat seperti ini:
use Staging; alter database Staging set recovery simple alter database Staging set recovery full dbcc shrinkfile ('Staging_log', 0, truncateonly); go
Jadi saya semakin bosan dengan ini, dan saya memutuskan untuk mencoba dan melakukan hal-hal dengan benar , dan ikuti langkah-langkah di sini dan membuat rencana pemeliharaan yang sebenarnya :
Masalahnya, saya belum pernah melakukan ini sebelumnya, jadi saya punya beberapa pertanyaan:
- Akankah mencadangkan log transaksi seperti ini secara otomatis memotongnya, atau ada hal lain yang perlu saya lakukan?
- Apakah saya tetap bisa menjalankan backup data dan log transaksi secara bersamaan? Jika tidak, lalu apa cara yang tepat untuk melakukan ini?
- File cadangan diambil dalam semalam oleh proses lain yang mengambil semua file di server dan menyimpannya di tempat lain - apakah itu ide yang baik untuk mengakhiri cadangan yang ditetapkan setelah 2 hari? Apakah saya perlu membuat mereka kedaluwarsa sama sekali?
- Tugas pembersihan masing-masing menghapus file .bak dan .trn "lama" di bawah subfolder dari
G:\Backups
. Apakah itu masuk akal? - Apakah lebih baik melakukan ini di SSIS, jadi saya bisa gagal ETL saya jika / ketika cadangan gagal? Atau haruskah proses ETL saya peduli?
Maaf jika ini terlalu banyak pertanyaan untuk satu posting, jika perlu saya akan mengedit dan mengajukan beberapa pertanyaan sebagai gantinya - Saya pikir mereka semua terkait erat.
sumber
Jawaban:
Anda harus memilih model pemulihan berdasarkan kebutuhan bisnis Anda:
Berdasarkan jawaban di atas, Anda harus hati-hati memilih model pemulihan basis data Anda .
Secara sederhana (tidak membahas model pemulihan penebangan massal) ,
Ingat bahwa pemotongan log BUKAN pengurangan fisik dalam ukuran file log transaksi. Ini berarti bahwa bagian tidak aktif dari file log transaksi ditandai sebagai dapat digunakan kembali .
Karenanya Anda harus mengatur dengan benar file log transaksi Anda (dan file data). Menumbuhkan file log akan memulai aktivitas autogrowth (jika database Anda disetel ke autogrow sebagai upaya terakhir). Periksa jawaban saya - Autogrowth - Persentase Penggunaan?
Saya akan sangat menyarankan Anda untuk membuang rencana perawatan dan mengimplementasikan [solusi perawatan cerdas - yang mudah, fleksibel dan mengikuti praktik terbaik] - 5 . - Solusi cadangan Ola (dan solusi pemeliharaan Indeks juga).
mari kita jawab pertanyaan Anda:
Harap jangan tambahkan cadangan atau setel agar kedaluwarsa. Mereka membuat kekacauan besar. Gunakan
INIT
dan ambil cadangan log terpisah dengan stempel datetime. Mudah dirawat. Gunakan solusi cadangan Ola untuk itu. Solusinya fleksibel untuk menghapus cadangan lama juga.Cadangan lengkap tidak berpengaruh pada cadangan T-log. Cadangan lengkap hanya berisi cukup log transaksi yang diperlukan sehingga jika terjadi pemulihan, database dapat konsisten secara transaksi dengan waktu di mana bagian pembacaan data dari cadangan lengkap selesai. Periksa - berapa banyak transaksi log termasuk cadangan lengkap?
Juga, cadangan log selama cadangan penuh tidak akan memotong log transaksi. Cadangan ( setelah beberapa) log setelah cadangan lengkap selesai akan memotong log.
Untuk keduanya, gunakan solusi pemeliharaan cadangan Ola. Ini akan menghapus file-file lama.
sumber