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:

  1. Memulihkan cadangan database terbaru dari database utama dan cadangan log berikutnya ke setiap instans server yang menghosting replika sekunder, menggunakan RESTORE WITH NORECOVERY
  2. 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 bermigrasi dari Pengiriman log ke Grup Ketersediaan AlwaysOn (SQL Server).

Prasyarat dan pembatasan

  • Pastikan bahwa sistem tempat Anda berencana untuk 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 kandar) 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 (WITH NORECOVERY) setiap cadangan log yang dibuat sejak pencadangan data terakhir yang dipulihkan.

Rekomendasi

  • Pada instans SQL Server yang berdiri sendiri, sebaiknya, jika memungkinkan, jalur file (termasuk huruf kandar) 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

  1. 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.

  2. Buat setidaknya satu cadangan log baru dari database utama.

Catatan

Pencadangan log transaksi mungkin tidak diperlukan jika cadangan log transaksi belum diambil sebelumnya pada database di replika utama. Microsoft merekomendasikan untuk mengambil cadangan log transaksi setiap kali database baru bergabung ke grup ketersediaan.

  1. 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.

  2. 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.

  1. 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.

  2. 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.

  3. Jika ada cadangan log yang telah diambil pada database utama sejak cadangan 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.

  4. 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 Transact-SQL

Contoh berikut menyiapkan database sekunder. Contoh ini menggunakan AdventureWorks2022 database sampel, yang menggunakan model pemulihan sederhana secara default.

  1. Untuk menggunakan AdventureWorks2022 database, ubah untuk menggunakan model pemulihan penuh:

    USE master;  
    GO  
    ALTER DATABASE MyDB1   
    SET RECOVERY FULL;  
    GO  
    
  2. 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  
    
  3. Salin cadangan lengkap ke instans server yang menghosting replika sekunder.

  4. Pulihkan pencadangan penuh, menggunakan RESTORE WITH NORECOVERY, ke instans server yang menghosting replika sekunder. Perintah pemulihan tergantung pada apakah jalur database primer dan sekunder identik.

    • Jika jalurnya identik:

      Di komputer yang menghosting replika sekunder, pulihkan pencadangan penuh 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 pada penerimaan 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 pemulihan database 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 memulihkan database.

      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  
      
  5. 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  
    
  6. Sebelum Anda 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  
    
  7. 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

  1. Jika Anda perlu membuat cadangan terbaru database utama, ubah direktori (cd) ke instans server yang menghosting replika utama.

  2. Gunakan cmdlet Backup-SqlDatabase untuk membuat masing-masing cadangan.

  3. Ubah direktori (cd) ke instans server yang menghosting replika sekunder.

  4. Untuk memulihkan database dan cadangan log dari setiap database utama, gunakan cmdlet restore-SqlDatabase , yang 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 SQL Server PowerShell. Untuk informasi selengkapnya, lihat Mendapatkan Bantuan SQL Server PowerShell.

  5. 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)