Beberapa rekan kerja saya terkejut ketika saya mengatakan kepada mereka bahwa saya dapat membuat cadangan database SQL Server saat masih berjalan dan bertanya-tanya bagaimana itu mungkin. Saya tahu bahwa SQL Server mampu membuat cadangan database saat ini masih online tetapi saya tidak yakin bagaimana menjelaskan mengapa itu mungkin. Pertanyaan saya adalah apa efeknya pada database?
Jika data diubah (dengan menyisipkan, memperbarui, atau menghapus) saat cadangan berjalan, apakah cadangan berisi perubahan-perubahan itu atau akankah itu ditambahkan ke basis data setelahnya?
Saya berasumsi bahwa file log memainkan peran penting di sini tapi saya tidak yakin bagaimana caranya.
sunting: Sama seperti catatan, kasus saya melibatkan pencadangan basis data menggunakan SQL Server Agent dan efek modifikasi basis data selama proses ini.
sumber
Selama pencadangan, snapshot akan dibuat untuk database dan data akan dibaca untuk cadangan dari snapshot itu. Operasi DB langsung yang sebenarnya tidak akan memengaruhi operasi cadangan.
sumber
Anda tidak bisa hanya menyalinnya karena mungkin ada perubahan pada pertengahan salinan database seperti yang Anda singgung dalam pertanyaan.
Itu harus dilakukan dengan agen yang mengetahui fungsi database dan kemudian mengambil "snapshot" melalui fungsi OS atau dapat menggunakan utilitas untuk membuang database dalam keadaan aman (seperti mysqldump, jika menggunakan mysql).
Kalau tidak, Anda mendapatkan cadangan yang dapat rusak dan Anda tidak akan mengetahuinya sampai Anda mengembalikannya. Saya pikir Joel dan Jeff baru-baru ini berbicara sedikit tentang podcast StackOverflow baru-baru ini.
Dan Anda benar bahwa file log itu penting. Jika file jurnal / log tidak sinkron dengan data aktual, mengembalikan file akan menghasilkan korupsi.
Itu bermuara pada cadangan yang diambil menggunakan keadaan aman dari database, baik melalui agen yang sadar database atau aplikasi snapshot atau aplikasi yang menyadari bagaimana cara menghubungkan database dengan benar ke dalam menjatuhkan data tanpa mengganggu pembaruan selama dump data kemudian mendukung file yang dihasilkan.
sumber
Ada begitu banyak cara untuk melakukan ini (secara umum, tidak tahu bagaimana MSSQL biasanya melakukannya) seperti hanya membuang database ke file sambil menambahkan setiap perubahan ke file log yang dilakukan setelah dump selesai - untuk memanfaatkan snapshot sistem file tertentu fitur seperti VSS di Windows.
sumber
Anda dapat mengambil apa yang dikenal sebagai cadangan hanya salinan. Tidak akan mempengaruhi database saat online
sumber