Kami kebetulan menggunakan SQL Server 2012 Edisi Standar. Saya juga menggunakan skrip Ola Hallengren untuk memberikan kerangka kerja yang mudah dan lebih fleksibel untuk melakukan pencadangan dan pemeliharaan.
Pertanyaan ini bukan tentang skrip Ola, melainkan tentang praktik terbaik. Saya menyadari jawaban utamanya adalah "itu tergantung pada kebutuhan perusahaan Anda". Tetapi saya berusaha mencari saran masyarakat tentang cara terbaik untuk memenuhi apa yang saya pahami tentang persyaratan perusahaan kami.
Saya ingin mengatur backup log transaksi untuk setiap 15 menit. Dengan cara ini kami semoga kehilangan tidak lebih dari 15 menit data. Haruskah saya menyiapkan satu pekerjaan yang menggunakan ALL_DATABASES? atau lebih baik mengatur satu pekerjaan untuk setiap basis data dan menendang semuanya secara paralel? Saya bertanya, karena saya memiliki perasaan berdasarkan pada bagaimana saya melihat skrip Ola berfungsi bahwa cadangan dimunculkan secara serial. Kelemahan dari serial adalah bahwa setiap cadangan berturut-turut menunggu sampai yang lain selesai. Ini berpotensi meningkatkan jumlah waktu antara cadangan (yaitu, lebih dari 15 menit). Ditambah kekhawatiran saya adalah bahwa kegagalan dalam satu cadangan menghentikan yang lain terjadi, dan saya tidak ingin hal itu terjadi. Saya ingin yang lain terus mendukung.
Jadi apakah benar bahwa skrip Ola dieksekusi secara serial dan juga kegagalan menghentikan cadangan yang berurutan?
Dan apakah lebih baik memiliki pekerjaan untuk setiap basis data? atau satu pekerjaan yang melakukan semuanya? Kecenderungan saya adalah pada pekerjaan yang terpisah, tetapi saya ingin memahami apa yang cenderung dilakukan oleh SQL Server DBA.
sumber
Jawaban:
Saya akan menyarankan untuk mengatur satu pekerjaan yang akan membuat cadangan log transaksi (serial). Ini juga akan memastikan bahwa cadangan tidak banyak memanfaatkan I / O karena Anda menjalankan cadangan untuk basis data satu per satu.
Apa yang bisa menjadi kelemahan dengan menjalankan secara paralel
Misalkan Anda memiliki 50 basis data dan Anda menjadwalkan pencadangan log transaksi dari semua basis data dan semuanya mulai berjalan secara paralel, ini pasti akan memanfaatkan banyak I / O. Dan jika disk di mana itu membuat cadangan file memiliki file data lain, Anda akan melihat kelambatan. Saya telah melihat cadangan menjadi lambat ketika permintaan yang buruk meminta banyak I / O berjalan bersama dengan pekerjaan cadangan.
Sekali lagi Andaikan Anda memiliki 50 database, bukankah akan sulit untuk mengelola 50 pekerjaan dalam agen SQL Server dan bagaimana kondisi Anda jika Anda memiliki 100-200 basis data. Saya tidak akan suka bila Anda membuka agen SQL Server dan melihat banyak pekerjaan, tetap sederhana. Saya yakin kasus yang sama akan terjadi pada Anda.
Cadangan log transaksi sebagian besar kecil dan jika Anda memiliki database sibuk yang menghasilkan banyak catatan log, Anda mungkin perlu mengubah frekuensi cadangan. Sebagian besar saya telah melihat cadangan transaksi log baik-baik saja ketika frekuensi adalah 15 menit. Saya tidak berpikir seharusnya menjadi masalah bagi Anda.
Saya akan mengatakan, jangan khawatir tentang hal itu. Pencadangan log transaksi tidak dapat gagal kecuali Anda melakukan kesalahan. Kesalahannya bisa saja
Pemilik yang menjalankan pekerjaan dihapus dari AD
Seseorang mengubah model pemulihan basis data.
Ruang disk tidak mencukupi
Terlepas dari di atas saya belum melihat alasan untuk cadangan log transaksi gagal. Sangat kuat, Anda bisa mengandalkannya.
sumber
Secara umum, selalu jalankan cadangan T-log Anda secara serial; banyak contoh saya memiliki beberapa lusin basis data, dan beberapa yang sangat aktif, dan pencadangan log transaksi hanya membutuhkan total beberapa detik; hingga setengah menit ketika itu sangat sibuk.
Menjalankan cadangan secara paralel hanya benar-benar akan bermanfaat jika semua kondisi berikut ini benar:
Database dan file log Anda semuanya pada spindel independen unik (atau berada di disk solid state dalam kombinasi apa pun)
Target cadangan Anda untuk setiap basis data berada pada spindle terpisah.
Anda tidak menggunakan SAN HBA atau iSCSI atau bandwidth lain yang dibagikan antara contoh SQL Server dan media.
yaitu IOPS dari membaca Database A dan menulis Backup A JANGAN menggunakan disk yang sama seperti membaca Database B dan menulis Backup B.
Jika semua ini benar, maka mungkin beberapa derajat paralelisme akan mengurangi jumlah total waktu kalender. Jika semua ini tidak benar, kemungkinan besar Anda akan menyebabkan satu atau lebih set disk memecah, dan cadangan paralel Anda sebenarnya akan membutuhkan lebih banyak waktu kalender daripada serial, tetapi juga dapat menyebabkan sistem file OS atau fragmentasi tingkat penyimpanan, karena Anda sedang menulis Cadangan A dan C Backup pada saat yang sama!
Jangan khawatir tentang satu cadangan gagal dan sisanya berhasil - jika ada yang gagal, Anda harus memeriksa semuanya, dan satu-satunya saat saya melihat cadangan gagal adalah karena:
Kerusakan disk
Kegagalan perangkat lunak kompresi kompresi Hyperbac / Litespeed / pihak ketiga (jika Anda memiliki perangkat lunak antara SQL dan disk yang gagal)
Kegagalan produk enkripsi (jika Anda memiliki perangkat lunak antara SQL dan disk yang gagal)
Kegagalan jaringan (jika file database, atau lebih mungkin file cadangan, ada di jaringan)
Izin
paling umum dengan pemasangan baru
atau lokasi cadangan baru
mengubah pengguna Layanan SQL Server (yang membutuhkan izin untuk pencadangan normal)
mengunci pengguna layanan SQL Server karena digunakan oleh lebih dari satu contoh SQL Server
Kesalahan konfigurasi
Masalah listrik
OS crash
Sebagian besar tidak akan memengaruhi satu dan bukan yang lain kecuali jika persyaratan di atas terpenuhi.
sumber
Sebagai tambahan, Ola mendesain skripnya di mana jika satu cadangan basis data gagal cadangan untuk alasan apa pun, yang berikutnya dicoba. Seperti yang dinyatakan sebelumnya, Anda bisa mengatur peringatan untuk memberi tahu Anda tentang kegagalan pekerjaan karena pekerjaan cadangan masih akan gagal, bahkan jika hanya satu cadangan basis data yang gagal dari semua basis data pengguna - dengan asumsi Anda mencadangkan semua basis data (satu pekerjaan untuk semua).
sumber