Melakukan failover manual yang direncanakan dari grup ketersediaan AlwaysOn (SQL Server)

Berlaku untuk:SQL Server

Topik ini menjelaskan cara melakukan failover manual tanpa kehilangan data (failover manual yang direncanakan) pada grup ketersediaan AlwaysOn dengan menggunakan SQL Server Management Studio, Transact-SQL, atau PowerShell di SQL Server. Grup ketersediaan gagal pada tingkat replika ketersediaan. Failover manual yang direncanakan, seperti failover grup ketersediaan AlwaysOn, mentransisikan replika sekunder ke peran utama. Secara bersamaan, failover mentransisikan replika utama sebelumnya ke peran sekunder.

Failover manual yang direncanakan hanya didukung ketika replika utama dan replika sekunder target berjalan dalam mode penerapan sinkron dan saat ini disinkronkan. Failover manual yang direncanakan mempertahankan semua data dalam database sekunder yang bergabung ke grup ketersediaan pada replika sekunder target. Setelah replika utama sebelumnya beralih ke peran sekunder, databasenya menjadi database sekunder. Kemudian mereka mulai menyinkronkan dengan database utama baru. Setelah semuanya beralih ke status SYNCHRONIZED, replika sekunder baru menjadi memenuhi syarat untuk berfungsi sebagai target failover manual yang direncanakan di masa mendatang.

Catatan

Jika replika sekunder dan utama keduanya dikonfigurasi untuk mode failover otomatis, setelah replika sekunder disinkronkan, replika tersebut juga dapat berfungsi sebagai target untuk failover otomatis. Untuk informasi selengkapnya, lihat Mode ketersediaan (grup ketersediaan AlwaysOn).

Sebelum Anda mulai

Penting

Ada prosedur khusus untuk melakukan failover pada grup ketersediaan skala baca tanpa manajer kluster. Saat grup ketersediaan memiliki CLUSTER_TYPE = NONE, ikuti prosedur di bawah Failover replika utama pada grup ketersediaan skala baca.

Pembatasan dan batasan

Prasyarat dan pembatasan

  • Replika sekunder target dan replika utama harus berjalan dalam mode ketersediaan penerapan sinkron.

  • Saat ini, replika sekunder target harus disinkronkan dengan replika utama. Semua database sekunder pada replika sekunder ini harus bergabung ke grup ketersediaan. Mereka juga harus disinkronkan dengan database utama yang sesuai (yaitu, database sekunder lokal harus DISINKRONKAN).

    Tip

    Untuk menentukan kesiapan failover replika sekunder, kueri kolom is_failover_ready dalam tampilan manajemen dinamis sys.dm_hadr_database_replica_cluster_states . Atau Anda dapat melihat kolom Kesiapan Failover dari dasbor grup AlwaysOn.

  • Tugas ini hanya didukung pada replika sekunder target. Anda harus terhubung ke instans server yang menghosting replika sekunder target.

Keamanan

Izin

Izin UBAH GRUP KETERSEDIAAN diperlukan pada grup ketersediaan. Izin GRUP KETERSEDIAAN KONTROL, izin UBAH GRUP KETERSEDIAAN APA PUN, atau izin SERVER KONTROL juga diperlukan.

Menggunakan SQL Server Management Studio

Untuk melakukan failover grup ketersediaan secara manual:

  1. Dalam Object Explorer, sambungkan ke instans server yang menghosting replika sekunder dari grup ketersediaan yang perlu di-failover. Perluas pohon server.

  2. Perluas simpul Ketersediaan Tinggi AlwaysOn dan node Grup Ketersediaan .

  3. Klik kanan grup ketersediaan yang akan di-failover, dan pilih Failover.

  4. Wizard Grup Ketersediaan Failover dimulai. Untuk informasi selengkapnya, lihat Menggunakan wizard Grup Ketersediaan Failover (SQL Server Management Studio).

Menggunakan Transact-SQL

Untuk melakukan failover grup ketersediaan secara manual:

  1. Sambungkan ke instans server yang menghosting replika sekunder target.

  2. Gunakan pernyataan UBAH GRUP KETERSEDIAAN , sebagai berikut:

    MENGUBAH GRUP KETERSEDIAAN group_name FAILOVER

    Dalam pernyataan , group_name adalah nama grup ketersediaan.

    Contoh berikut secara manual mengalihkan grup ketersediaan MyAg ke replika sekunder yang terhubung:

    ALTER AVAILABILITY GROUP MyAg FAILOVER;  
    

Gunakan PowerShell

Untuk melakukan failover grup ketersediaan secara manual:

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

  2. Gunakan cmdlet Switch-SqlAvailabilityGroup .

    Catatan

    Untuk melihat sintaks cmdlet, gunakan cmdlet Get-Help di lingkungan SQL Server PowerShell. Untuk informasi selengkapnya, lihat Mendapatkan bantuan untuk SQL Server PowerShell.

    Contoh berikut secara manual mengalihkan grup ketersediaan MyAg ke replika sekunder dengan jalur yang ditentukan:

    Switch-SqlAvailabilityGroup -Path SQLSERVER:\Sql\SecondaryServer\InstanceName\AvailabilityGroups\MyAg  
    

    Untuk menyiapkan dan menggunakan penyedia PowerShell SQL Server:

Tindak lanjut: Setelah Anda melakukan failover grup ketersediaan secara manual

Jika Anda gagal di luar kumpulan failover otomatis dari grup ketersediaan, sesuaikan suara kuorum simpul pengklusteran failover Windows Server untuk mencerminkan konfigurasi grup ketersediaan baru Anda. Untuk informasi selengkapnya, lihat Pengklusteran failover Windows Server (WSFC) dengan SQL Server.

Failover replika utama pada grup ketersediaan skala baca

Setiap grup ketersediaan hanya memiliki satu replika utama. Replika utama memungkinkan baca dan tulis. Untuk mengubah replika mana yang utama, Anda dapat melakukan failover. Dalam grup ketersediaan umum, manajer kluster mengotomatiskan proses failover. Dalam grup ketersediaan dengan jenis kluster NONE, proses failover manual.

Ada dua cara untuk melakukan failover pada replika utama dalam grup ketersediaan dengan jenis kluster NONE:

  • Failover manual tanpa kehilangan data
  • Failover manual paksa dengan kehilangan data

Failover manual tanpa kehilangan data

Gunakan metode ini saat replika utama tersedia, tetapi Anda perlu mengubah replika utama untuk sementara waktu atau permanen yang menghosting replika utama. Untuk menghindari potensi kehilangan data, sebelum Anda mengeluarkan failover manual, pastikan bahwa replika sekunder target sudah diperbarui.

Untuk melakukan failover secara manual tanpa kehilangan data:

  1. Buat replika SYNCHRONOUS_COMMITsekunder primer dan target saat ini .

    ALTER AVAILABILITY GROUP [AGRScale] 
         MODIFY REPLICA ON N'<node2>' 
         WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT);
    
  2. Untuk mengidentifikasi bahwa transaksi aktif diterapkan ke replika utama dan setidaknya satu replika sekunder sinkron, jalankan kueri berikut:

    SELECT ag.name, 
       drs.database_id, 
       drs.group_id, 
       drs.replica_id, 
       drs.synchronization_state_desc, 
       ag.sequence_number
    FROM sys.dm_hadr_database_replica_states drs, sys.availability_groups ag
    WHERE drs.group_id = ag.group_id; 
    

    Replika sekunder disinkronkan ketika synchronization_state_desc adalah SYNCHRONIZED.

  3. Perbarui REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT ke 1.

    Skrip berikut diatur REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT ke 1 pada grup ketersediaan bernama ag1. Sebelum Anda menjalankan skrip berikut, ganti ag1 dengan nama grup ketersediaan Anda:

    ALTER AVAILABILITY GROUP [AGRScale] 
         SET (REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT = 1);
    

    Pengaturan ini memastikan bahwa setiap transaksi aktif diterapkan pada replika utama dan setidaknya satu replika sekunder sinkron.

    Catatan

    Pengaturan ini tidak spesifik untuk failover dan harus ditetapkan berdasarkan persyaratan lingkungan.

  4. Atur replika utama dan replika sekunder yang tidak berpartisipasi dalam failover offline untuk mempersiapkan perubahan peran:

    ALTER AVAILABILITY GROUP [AGRScale] OFFLINE
    
  5. Promosikan replika sekunder target ke primer.

    ALTER AVAILABILITY GROUP AGRScale FORCE_FAILOVER_ALLOW_DATA_LOSS; 
    
  6. Perbarui peran primer lama dan sekunder lainnya ke SECONDARY, jalankan perintah berikut pada instans SQL Server yang menghosting replika utama lama:

    ALTER AVAILABILITY GROUP [AGRScale] 
         SET (ROLE = SECONDARY); 
    

    Catatan

    Untuk menghapus grup ketersediaan, gunakan DROP AVAILABILITY GROUP. Untuk grup ketersediaan yang dibuat dengan jenis kluster NONE atau EXTERNAL, jalankan perintah pada semua replika yang merupakan bagian dari grup ketersediaan.

  7. Lanjutkan pergerakan data, jalankan perintah berikut untuk setiap database dalam grup ketersediaan pada instans SQL Server yang menghosting replika utama:

    ALTER DATABASE [db1]
         SET HADR RESUME
    
  8. Buat ulang pendengar apa pun yang Anda buat untuk tujuan skala baca dan yang tidak dikelola oleh manajer kluster. Jika pendengar asli menunjuk ke primer lama, letakkan dan buat ulang untuk menunjuk ke primer baru.

Failover manual paksa dengan kehilangan data

Jika replika utama tidak tersedia dan tidak dapat segera dipulihkan, maka Anda perlu memaksa failover ke replika sekunder dengan kehilangan data. Namun, jika replika utama asli pulih setelah failover, replika tersebut akan mengasumsikan peran utama. Untuk menghindari setiap replika berada dalam status yang berbeda, hapus primer asli dari grup ketersediaan setelah failover paksa dengan kehilangan data. Setelah primer asli kembali online, hapus grup ketersediaan darinya sepenuhnya.

Untuk memaksa failover manual dengan kehilangan data dari replika utama N1 ke replika sekunder N2, ikuti langkah-langkah berikut:

  1. Pada replika sekunder (N2), mulai failover paksa:

    ALTER AVAILABILITY GROUP [AGRScale] FORCE_FAILOVER_ALLOW_DATA_LOSS;
    
  2. Pada replika utama baru (N2), hapus primer asli (N1):

    ALTER AVAILABILITY GROUP [AGRScale]
    REMOVE REPLICA ON N'N1';
    
  3. Validasi bahwa semua lalu lintas aplikasi diarahkan ke pendengar dan/atau replika utama baru.

  4. Jika primer asli (N1) online, segera ambil grup ketersediaan AGRScale offline pada primer asli (N1):

    ALTER AVAILABILITY GROUP [AGRScale] OFFLINE
    
  5. Jika ada data atau perubahan yang tidak disinkronkan, simpan data ini melalui cadangan atau opsi replikasi data lain yang sesuai dengan kebutuhan bisnis Anda.

  6. Selanjutnya, hapus grup ketersediaan dari primer asli (N1):

    DROP AVAILABILITY GROUP [AGRScale];
    
  7. Hilangkan database grup ketersediaan pada replika utama asli (N1):

    USE [master]
    GO
    DROP DATABASE [AGDBRScale]
    GO
    
  8. (Opsional) Jika diinginkan, Anda sekarang dapat menambahkan N1 kembali sebagai replika sekunder baru ke grup ketersediaan AGRScale.

Lihat juga