Menyiapkan database sekunder untuk grup ketersediaan AlwaysOn
Berlaku untuk: SQL Server
Topik ini menjelaskan cara menyiapkan database untuk grup ketersediaan AlwaysOn di SQL Server dengan menggunakan SQL Server Management Studio, Transact-SQL, atau PowerShell. Menyiapkan database memerlukan dua langkah:
- Memulihkan cadangan database terbaru dari database utama dan cadangan log berikutnya ke setiap instans server yang menghosting replika sekunder, menggunakan RESTORE WITH NORECOVERY
- Bergabunglah dengan database yang dipulihkan ke grup ketersediaan.
Tip
Jika Anda memiliki konfigurasi pengiriman log yang ada, Anda mungkin dapat mengonversi database utama pengiriman log bersama dengan satu atau beberapa database sekundernya ke replika utama grup ketersediaan dan satu atau beberapa replika sekunder. Untuk informasi selengkapnya, lihat Prasyarat untuk migrasi dari Pengiriman log ke Grup Ketersediaan AlwaysOn (SQL Server).
Prasyarat dan pembatasan
Pastikan bahwa sistem tempat Anda berencana menempatkan database memiliki drive disk dengan ruang yang cukup untuk database sekunder.
Nama database sekunder harus sama dengan nama database utama.
Gunakan RESTORE WITH NORECOVERY untuk setiap operasi pemulihan.
Jika database sekunder perlu berada di jalur file yang berbeda (termasuk huruf drive) dari database utama, perintah pemulihan juga harus menggunakan opsi WITH MOVE untuk setiap file database untuk menentukannya ke jalur database sekunder.
Jika Anda memulihkan grup file database dengan grup file, pastikan untuk memulihkan seluruh database.
Setelah memulihkan database, Anda harus memulihkan (DENGAN NORECOVERY) setiap cadangan log yang dibuat sejak cadangan data terakhir yang dipulihkan.
Rekomendasi
Pada instans SQL Server yang berdiri sendiri, kami menyarankan bahwa, jika memungkinkan, jalur file (termasuk huruf drive) dari database sekunder tertentu identik dengan jalur database utama yang sesuai. Ini karena jika Anda memindahkan file database saat membuat database sekunder, operasi add-file yang lebih baru mungkin gagal pada database sekunder dan menyebabkan database sekunder ditangguhkan.
Sebelum menyiapkan database sekunder Anda, kami sangat menyarankan agar Anda menangguhkan pencadangan log terjadwal pada database dalam grup ketersediaan hingga inisialisasi replika sekunder selesai.
Keamanan
Saat database dicadangkan, properti database TRUSTWORTHY diatur ke NONAKTIF. Oleh karena itu, TRUSTWORTHY selalu NONAKTIF pada database yang baru dipulihkan.
Izin
IZIN BACKUP DATABASE dan BACKUP LOG default ke anggota peran server tetap sysadmin dan peran database tetap db_owner dan db_backupoperator . Untuk informasi selengkapnya, lihat BACKUP (Transact-SQL).
Ketika database yang dipulihkan tidak ada pada instans server, pernyataan RESTORE memerlukan izin CREATE DATABASE. Untuk informasi selengkapnya, lihat RESTORE (Transact-SQL).
Menggunakan SQL Server Management Studio
Catatan
Jika jalur file pencadangan dan pemulihan identik antara instans server yang menghosting replika utama dan setiap instans yang menghosting replika sekunder, Anda harus dapat membuat database replika sekunder dengan Wizard Grup Ketersediaan Baru, Menambahkan Replika ke Wizard Grup Ketersediaan, atau Menambahkan Database ke Wizard Grup Ketersediaan.
Untuk menyiapkan database sekunder
Kecuali Anda sudah memiliki cadangan database terbaru dari database utama, buat cadangan database lengkap atau diferensial baru. Sebagai praktik terbaik, tempatkan cadangan ini dan cadangan log berikutnya ke berbagi jaringan yang direkomendasikan.
Buat setidaknya satu cadangan log baru dari database utama.
Catatan
Pencadangan log transaksi mungkin tidak diperlukan jika cadangan log transaksi sebelumnya belum diambil pada database di replika utama. Microsoft merekomendasikan untuk mengambil cadangan log transaksi setiap kali database baru bergabung ke grup ketersediaan.
Pada instans server yang menghosting replika sekunder, pulihkan cadangan database lengkap database utama (dan secara opsional cadangan diferensial) diikuti oleh cadangan log berikutnya.
Pada halaman OPSI PULIHKAN DATABASE, pilih Biarkan database tidak beroperasi, dan jangan gulung balik transaksi yang tidak dilakukan. Log transaksi tambahan dapat dipulihkan. (PULIHKAN DENGAN NORECOVERY).
Jika jalur file database utama dan database sekunder berbeda, misalnya, jika database utama berada di drive 'F:' tetapi instans server yang menghosting replika sekunder tidak memiliki drive F: , sertakan opsi MOVE dalam klausa WITH Anda.
Untuk menyelesaikan konfigurasi database sekunder, Anda perlu menggabungkan database sekunder ke grup ketersediaan. Untuk informasi selengkapnya, Gabungkan Database Sekunder ke Grup Ketersediaan (SQL Server).
Catatan
Untuk informasi tentang cara melakukan operasi pencadangan dan pemulihan ini, lihat Tugas Pencadangan dan Pemulihan Terkait, nanti di bagian ini.
Tugas Pencadangan dan Pemulihan Terkait
Untuk membuat cadangan database
Untuk membuat cadangan log
Untuk memulihkan cadangan
Menggunakan T-SQL
Untuk menyiapkan database sekunder
Catatan
Untuk contoh prosedur ini, lihat Contoh (Transact-SQL), sebelumnya dalam topik ini.
Kecuali Anda memiliki cadangan penuh terbaru dari database utama, sambungkan ke instans server yang menghosting replika utama dan membuat cadangan database lengkap. Sebagai praktik terbaik, tempatkan cadangan ini dan cadangan log berikutnya ke berbagi jaringan yang direkomendasikan.
Pada instans server yang menghosting replika sekunder, pulihkan cadangan database lengkap database utama (dan secara opsional cadangan diferensial) diikuti oleh semua cadangan log berikutnya. Gunakan WITH NORECOVERY untuk setiap operasi pemulihan.
Jika jalur file database utama dan database sekunder berbeda, misalnya, jika database utama berada di drive 'F:' tetapi instans server yang menghosting replika sekunder tidak memiliki drive F: , sertakan opsi MOVE dalam klausa WITH Anda.
Jika ada cadangan log yang telah diambil pada database utama sejak pencadangan log yang diperlukan, Anda juga harus menyalinnya ke instans server yang menghosting replika sekunder dan menerapkan masing-masing cadangan log tersebut ke database sekunder, dimulai dengan yang paling awal dan selalu menggunakan RESTORE WITH NORECOVERY.
Catatan
Cadangan log tidak akan ada jika database utama baru saja dibuat dan belum ada cadangan log yang diambil atau jika model pemulihan baru saja diubah dari sederhana ke penuh.
Untuk menyelesaikan konfigurasi database sekunder, Anda perlu menggabungkan database sekunder ke grup ketersediaan. Untuk informasi selengkapnya, Gabungkan Database Sekunder ke Grup Ketersediaan (SQL Server).
Catatan
Untuk informasi tentang cara melakukan operasi pencadangan dan pemulihan ini, lihat Tugas Pencadangan dan Pemulihan Terkait, nanti dalam topik ini.
Contoh T-SQL
Contoh berikut menyiapkan database sekunder. Contoh ini menggunakan AdventureWorks2022
database sampel, yang menggunakan model pemulihan sederhana secara default.
Untuk menggunakan
AdventureWorks2022
database, ubah untuk menggunakan model pemulihan penuh:USE master; GO ALTER DATABASE MyDB1 SET RECOVERY FULL; GO
Setelah memodifikasi model pemulihan database dari SIMPLE ke FULL, buat cadangan lengkap, yang dapat digunakan untuk membuat database sekunder. Karena model pemulihan baru saja diubah, opsi WITH FORMAT ditentukan untuk membuat set media baru. Ini berguna untuk memisahkan cadangan di bawah model pemulihan penuh dari cadangan sebelumnya yang dibuat di bawah model pemulihan sederhana. Untuk tujuan contoh ini, file cadangan (C:\
AdventureWorks2022
.bak) dibuat pada drive yang sama dengan database.Catatan
Untuk database produksi, Anda harus selalu mencadangkan ke perangkat terpisah.
Pada instans server yang menghosting replika utama (
INSTANCE01
), buat cadangan lengkap database utama sebagai berikut:BACKUP DATABASE MyDB1 TO DISK = 'C:\MyDB1.bak' WITH FORMAT GO
Salin cadangan lengkap ke instans server yang menghosting replika sekunder.
Pulihkan pencadangan penuh, menggunakan RESTORE WITH NORECOVERY, ke instans server yang menghosting replika sekunder. Perintah pemulihan bergantung pada apakah jalur database primer dan sekunder identik.
Jika jalurnya identik:
Di komputer yang menghosting replika sekunder, pulihkan pencadangan lengkap sebagai berikut:
RESTORE DATABASE MyDB1 FROM DISK = 'C:\MyDB1.bak' WITH NORECOVERY GO
Jika jalur berbeda:
Jika jalur database sekunder berbeda dari jalur database utama (misalnya, huruf drive mereka berbeda), membuat database sekunder mengharuskan operasi pemulihan menyertakan klausul MOVE.
Penting
Jika nama jalur database utama dan sekunder berbeda, Anda tidak dapat menambahkan file. Ini karena saat menerima log untuk operasi tambahkan file, instans server replika sekunder mencoba menempatkan file baru di jalur yang sama seperti yang digunakan oleh database utama.
Misalnya, perintah berikut memulihkan cadangan database utama yang berada di direktori data instans default SQL Server, C:\Program Files\Microsoft SQL Server\MSSQL12. MSSQLSERVER\MSSQL\DATA. Operasi database pemulihan harus memindahkan database ke direktori data instans jarak jauh SQL Server bernama (Always On1), yang menghosting replika sekunder pada node kluster lain. Di sana, file data dan log dipulihkan ke C:\Program Files\Microsoft SQL Server\MSSQL13. Direktori Always On1\MSSQL\DATA . Operasi pemulihan menggunakan WITH NORECOVERY, untuk meninggalkan database sekunder dalam database pemulihan.
RESTORE DATABASE MyDB1 FROM DISK='C:\MyDB1.bak' WITH NORECOVERY, MOVE 'MyDB1_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.mdf', MOVE 'MyDB1_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL13.Always On1\MSSQL\DATA\MyDB1_Data.ldf'; GO
Setelah memulihkan cadangan penuh, Anda harus membuat cadangan log pada database utama. Misalnya, pernyataan Transact-SQL berikut mencadangkan log ke file cadangan bernama E:\MyDB1_log.trn:
BACKUP LOG MyDB1 TO DISK = 'E:\MyDB1_log.trn' GO
Sebelum dapat menggabungkan database ke replika sekunder, Anda harus menerapkan cadangan log yang diperlukan (dan cadangan log berikutnya).
Misalnya, pernyataan Transact-SQL berikut memulihkan log pertama dari C:\MyDB1.trn:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=1, NORECOVERY GO
Jika ada cadangan log tambahan yang terjadi sebelum database bergabung dengan replika sekunder, Anda juga harus memulihkan semua cadangan log tersebut, secara berurutan, ke instans server yang menghosting replika sekunder menggunakan RESTORE WITH NORECOVERY.
Misalnya, pernyataan Transact-SQL berikut memulihkan dua log tambahan dari E:\MyDB1_log.trn:
RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=2, NORECOVERY GO RESTORE LOG MyDB1 FROM DISK = 'E:\MyDB1_log.trn' WITH FILE=3, NORECOVERY GO
Menggunakan PowerShell
Untuk menyiapkan database sekunder
Jika Anda perlu membuat cadangan terbaru database utama, ubah direktori (cd) ke instans server yang menghosting replika utama.
Gunakan cmdlet Backup-SqlDatabase untuk membuat masing-masing cadangan.
Ubah direktori (cd) ke instans server yang menghosting replika sekunder.
Untuk memulihkan database dan cadangan log dari setiap database utama, gunakan cmdlet restore-SqlDatabase , menentukan parameter pemulihan NoRecovery . Jika jalur file berbeda antara komputer yang menghosting replika utama dan replika sekunder target, gunakan juga parameter pemulihan RelocateFile .
Catatan
Untuk melihat sintaks cmdlet, gunakan cmdlet Get-Help di lingkungan PowerShell SQL Server. Untuk informasi selengkapnya, lihat Mendapatkan Bantuan SQL Server PowerShell.
Untuk menyelesaikan konfigurasi database sekunder, Anda perlu menggabungkannya ke grup ketersediaan. Untuk informasi selengkapnya, Gabungkan Database Sekunder ke Grup Ketersediaan (SQL Server).
Untuk menyiapkan dan menggunakan penyedia PowerShell SQL Server
Sampel skrip dan perintah pencadangan dan pemulihan
Perintah PowerShell berikut mencadangkan pencadangan database lengkap dan log transaksi ke berbagi jaringan dan memulihkan cadangan tersebut dari berbagi tersebut. Contoh ini mengasumsikan bahwa jalur file tempat database dipulihkan sama dengan jalur file tempat database dicadangkan.
# Create database backup
Backup-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -ServerInstance "SourceMachine\Instance"
# Create log backup
Backup-SqlDatabase -Database "MyDB1" -BackupAction "Log" -BackupFile "\\share\backups\MyDB1.trn" -ServerInstance "SourceMachine\Instance"
# Restore database backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.bak" -NoRecovery -ServerInstance "DestinationMachine\Instance"
# Restore log backup
Restore-SqlDatabase -Database "MyDB1" -BackupFile "\\share\backups\MyDB1.trn" -RestoreAction "Log" -NoRecovery -ServerInstance "DestinationMachine\Instance"
Langkah berikutnya
Untuk menyelesaikan konfigurasi database sekunder, gabungkan database yang baru dipulihkan ke grup ketersediaan. Untuk informasi selengkapnya, lihat Menggabungkan Database Sekunder ke Grup Ketersediaan (SQL Server).
Lihat juga
Gambaran Umum Grup Ketersediaan AlwaysOn (SQL Server)
BACKUP (Transact-SQL)
Argumen RESTORE (Transact-SQL)
RESTORE (Transact-SQL)
Memecahkan Masalah Operasi Add-File yang Gagal (Grup Ketersediaan AlwaysOn)