Saat ini saya memiliki tugas yang dijadwalkan yang padam setiap malam pukul 2 pagi yang memanggil SQLCMD.exe dan meneruskannya .sql script untuk dijalankan untuk cadangan (ditunjukkan di bawah). Kami adalah perusahaan yang cukup kecil dengan kebutuhan yang terus meningkat karena pertumbuhan besar di sisi bisnis. Kehilangan 1 hari data pada saat ini akan menelan biaya puluhan ribu dolar vs beberapa ratus kali ini tahun lalu. Sampai saya dapat memigrasikan platform DB ini ke solusi berbeda di mana mirroring data terjadi dengan redundansi besar seperti SQL Azure, apa hal terbaik yang bisa saya lakukan untuk mendapatkan backup yang lebih sering? Apakah skrip di bawah ini memaksa DB menjadi offline? Bisakah saya menjalankan skrip ini dengan pengguna yang berinteraksi dengan DB?
USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
WITH FORMAT,
MEDIANAME = 'CompanyCRM_Backup',
NAME = 'Full Backup of CompanyCRM';
GO
Memperbarui
Wow, jelas komunitas DBA yang jauh lebih berdedikasi di sini daripada di SO. Terima kasih atas responnya sejauh ini. Satu-satunya hal yang hilang adalah "bagaimana." Saya telah menunjukkan perintah SQL di atas yang saya gunakan untuk melakukan backup harian, tetapi contoh cadangan log tambahan adalah MIA. Ini bukan DB besar, saat ini berjalan di SQLExpress. Ketika saya mengatakan HA atau SQL Azure, saya secara khusus merujuk pada arsitektur di tempat yang tidak kita miliki sebagai bisnis kecil. Contoh ini sedang berjalan di server ONLY kami. Jika server itu crash, waktu kita untuk memulihkan menjadi titik yang sulit. Inilah sebabnya mengapa SQL Azure menjadi menarik.
sumber
Jawaban:
EDIT, dari pembaruan Anda
Seperti yang Anda katakan bahwa Anda dapat kehilangan data senilai 1 hari maka saya hanya akan menempatkan database dalam mode pemulihan SEDERHANA. Anda kemudian dapat melakukan PENUH setiap pagi dan / atau malam hari. Jika Anda ingin melindungi diri Anda pada siang hari, Anda mungkin dapat melakukan backup diferensial dari database, salah satunya hanya dalam situasi berjaga-jaga. Ini akan menangkap setiap perubahan yang dibuat sejak pencadangan penuh. Jika saya tahu kerangka waktu di mana banyak input terjadi, saya mungkin akan membuang jenis cadangan ini di sana setelah selesai. Ini dapat menghemat waktu orang dalam pemulihan sehingga mereka tidak perlu melakukan entri data tambahan.
Karena ini adalah satu-satunya server Anda, saya akan memastikan Anda menjalankan DBCC CHECKDB terhadap database. Backup tidak ada gunanya ketika Anda mengetahui mereka korup (saya pikir seseorang menyebutkan ini juga). Anda dapat dengan mudah menemukan beberapa skrip di luar sana untuk mengatur tugas yang dijadwalkan untuk memeriksa ERRORLOG SQL untuk pesan DBCC untuk menangkap kesalahan. SQL Server tidak akan secara asli memperingatkan Anda tentang kesalahan yang dikembalikan dari pesan DBCC, jadi kecuali Anda secara manual memeriksa setiap kali skrip yang melakukannya dapat membantu.
Perintah cadangan diferensial:
sumber
sumber
Hal pertama yang perlu Anda lakukan adalah mencari tahu berapa banyak data yang Anda bisa kehilangan. Sampai saat itu, Anda tidak akan tahu seberapa sering membuat cadangan basis data. Ini bukan nomor yang harus Anda cari. Ini adalah sesuatu yang perlu diputuskan oleh bisnis (atau CEO di perusahaan yang lebih kecil). Nomor pertama yang akan mereka kembalikan adalah 0 menit. Yang bisa dilakukan, tetapi akan sangat mahal untuk dilakukan. Pada kenyataannya, jumlah data terkecil yang dapat Anda ambil cadangannya adalah setiap 2 menit. Jika jumlah perubahan data dalam sistem cukup kecil, Anda dapat melakukan pencadangan setiap menit.
Untuk melakukan pencadangan log transaksi, yang harus Anda lakukan, Anda harus meletakkan basis data ke mode pemulihan LENGKAP.
Jika Anda mampu kehilangan data senilai 5 menit maka Anda mungkin ingin melakukan backup penuh setiap hari, dan backup log transaksi setiap 5 menit. Jika Anda dapat kehilangan data senilai 15 menit maka Anda ingin melakukan pencadangan penuh dan pencadangan log transaksi setiap 15 menit.
Pilihan lain adalah melakukan backup penuh mingguan, backup diferensial harian dan backup log transaksi setiap x menit seperti yang saya bicarakan di atas.
Ingatlah bahwa semakin sering Anda perlu membuat cadangan, semakin banyak file yang perlu Anda pulihkan jika terjadi kegagalan basis data atau penghapusan data. Mungkin masuk akal untuk melakukan backup diferensial sepanjang hari untuk mempersingkat jumlah waktu yang diperlukan untuk mengembalikan database.
Semua cadangan yang menggunakan database CADANGAN dan pernyataan LOG CADANGAN dilakukan secara online dan tidak menghentikan pengguna mengakses database.
sumber
Katakanlah Anda memiliki skenario bisnis yang sama dengan waktu tersibuk Anda: 9 pagi - 5 sore Senin-Jumat. Maka saya akan menyarankan: Backup penuh pada hari Minggu malam. Pencadangan diferensial pada pukul 8 pagi, 6 sore, dan 1 pagi (untuk mengurangi waktu pemulihan). Catat cadangan setiap jam atau tergantung pada apa yang dibutuhkan bisnis Anda.
Tergantung pada periode penyimpanan Anda, Anda harus memiliki pekerjaan pembersihan otomatis untuk menghapus file cadangan yang lama. Semua ini dapat dibuat menggunakan paket pemeliharaan SQL. Lihat tautan ini untuk SQL 2005 .
Anda harus menyimpan cadangan Anda pada beberapa bentuk disk yang berlebihan (dicerminkan), atau Anda dapat menggunakan kaset untuk penyimpanan di luar kantor. Pengguna dapat terus bekerja pada sistem saat cadangan berjalan.
sumber
Saya tidak akan melakukan backup penuh setiap malam. Jika itu adalah database besar maka itu bisa memakan waktu yang sangat lama, belum lagi memakan banyak ruang di media. Lakukan pencadangan penuh setiap akhir pekan dan pencadangan diferensial setiap malam. Kemudian lakukan pencadangan log transaksi (dengan asumsi database Anda dalam pemulihan penuh) setiap jam, atau setiap setengah jam, tetapi pastikan file .bak dan .trn ini berada di disk terpisah jika terjadi kegagalan disk.
sumber
Bisakah Anda menyinkronkan folder cadangan Anda di malam hari untuk mendapatkan penyimpanan di luar situs? Karena saya cukup yakin ini untuk perusahaan perawatan kesehatan, apakah ada yang cukup aman untuk kepatuhan HiPA? Atau mungkin superkripsinya saja?
Apakah skrip setidaknya meletakkan salinan cadangan pada jaringan berbagi? Dengan begitu jika kotak fisik meledak ...
sumber