Mengapa TO DISK = N’NUL’
?
Saya tidak mengerti mengapa Anda menggunakan TO DISK = N’NUL’
:
BACKUP
DATABASE [test0916aj8CJ] TO DISK = N’NUL’
Jika Anda melakukannya, cadangan disimpan ke NUL
, (mis. = Ke mana-mana / tidak ada) dan tidak dapat digunakan karena file-nya tidak ada.
Meskipun NUL
juga dapat digunakan sebagai tujuan untuk LOG Backups, itu juga tidak boleh digunakan, terutama pada server Prod karena LOGs akan hilang dan rantai Backup akan rusak. (~ mirip dengan a SHRINKFILE
)
Cadangan LOG
Sebelum menambahkan DB ke grup, Anda harus menyiapkannya. Saat Anda ingin menyiapkan DB sekunder, setidaknya 1 Log Transaksi cadangan harus diambil dan dipulihkan. Mirror menggunakannya untuk mengetahui transaksi mana yang sudah disinkronkan pada DB sekunder dan transaksi mana yang belum disinkronkan dengan DB primer.
Karenanya Anda harus Mencadangkan Log Transaksi pada DB utama:
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
The COPY_ONLY
pilihan harus digunakan. Itu memastikan bahwa Log tidak terpotong pada akhir cadangan LOG.
Rantai cadangan DB primer
Namun, Anda tidak dapat memulihkan cadangan log saja, artinya tanpa rantai cadangan (lihat juga jawaban Kin). Ini berarti bahwa cadangan Log Transaksi harus diambil setelah Cadangan Database LENGKAP (+ Diferensial opsional jika diperlukan) telah diambil.
Karena COPY_ONLY
opsi tidak memutus rantai cadangan, itu juga tidak membuat rantai cadangan. The COPY_ONLY
pilihan tidak dapat digunakan untuk Database Backup.
Cadangkan secara berurutan:
- Cadangan Database LENGKAP tanpa
COPY_ONLY
opsi
- Cadangan diferensial opsional
- 1 LOG Backup dengan
COPY_ONLY
opsi
- cadangan LOG lain (atau lebih) jika perlu ...
Kembalikan DB sekunder
Maka Backup Database harus dikembalikan (+ Diferensial) pada yang sekunder.
Itu harus dipulihkan dengan NORECOVERY
opsi karena Anda juga ingin mengembalikan cadangan LOG begitu Cadangan LENGKAP telah dipulihkan.
Akhirnya Anda akan mengembalikan LOG Backup. Anda masih perlu menggunakan NORECOVERY
opsi ini karena mirror akan terus memulihkan transaksi sekali di tempat.
- Kembalikan cadangan LENGKAP dengan
NORECOVERY
opsi
- Kembalikan cadangan DIFF dengan
NORECOVERY
opsi
- Pulihkan semua cadangan LOG untuk
NORECOVERY
opsi ini
Mari kita menggabungkan semuanya (menyesuaikannya dengan env Anda)
Di server Utama jalankan:
USE master
Go
BACKUP DATABASE [test0916aj8CJ] TO DISK = N'....bak'
WITH FORMAT, INIT, NAME = N'test0916aj8CJ-Full Database Backup', STATS = 10
GO
BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak'
WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
GO
Pada menjalankan server Sekunder:
USE master
Go
RESTORE DATABASE [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
GO
RESTORE LOG [test0916aj8CJ] FROM DISK = N'....bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
Anda kemudian dapat melanjutkan dengan menambahkan DB sekunder baru ke grup ketersediaan ...
Tindakan opsional
- Lebih baik mengatur opsi DISK ke folder bersama yang tersedia dari server Utama dan Sekunder.
- Lebih baik menyimpan file DB pada disk dan lokasi yang sama pada server Utama dan Sekunder.