Pelanggan Replikasi dan Grup Ketersediaan AlwaysOn (SQL Server)

Berlaku untuk:yes SQL Server (semua versi yang didukung)

Saat grup ketersediaan AlwaysOn yang berisi database yang merupakan pelanggan replikasi gagal, langganan replikasi mungkin gagal. Untuk pelanggan pendorongan replikasi transaksional, agen distribusi akan terus mereplikasi secara otomatis setelah failover jika langganan dibuat menggunakan nama pendengar AG. Untuk pelanggan penarikan replikasi transaksional, agen distribusi akan terus mereplikasi secara otomatis setelah failover, jika langganan dibuat menggunakan nama pendengar AG dan server pelanggan asli aktif dan berjalan. Ini karena pekerjaan agen distribusi hanya dibuat pada pelanggan asli (replika utama AG). Untuk pelanggan gabungan, administrator replikasi harus mengonfigurasi ulang pelanggan secara manual, dengan membuat ulang langganan.

Apa yang Didukung

Replikasi SQL Server mendukung failover otomatis penerbit dan failover otomatis pelanggan transaksional. Pelanggan gabungan dapat menjadi bagian dari grup ketersediaan, namun tindakan manual diperlukan untuk mengonfigurasi pelanggan baru setelah failover. Grup Ketersediaan tidak dapat digabungkan dengan skenario WebSync dan Ringkas SQL Server.

Cara Membuat Langganan Transaksional di Lingkungan AlwaysOn

Untuk replikasi transaksional, gunakan langkah-langkah berikut untuk mengonfigurasi dan melakukan failover grup ketersediaan pelanggan:

  1. Sebelum membuat langganan, tambahkan database pelanggan ke grup ketersediaan AlwaysOn yang sesuai.

  2. Tambahkan listener grup ketersediaan pelanggan sebagai server tertaut ke semua simpul grup ketersediaan. Langkah ini memastikan bahwa semua mitra failover potensial menyadari dan dapat terhubung ke pendengar.

  3. Menggunakan skrip di bagian Membuat Langganan Push Replikasi Transaksional di bawah ini, buat langganan menggunakan nama pendengar grup ketersediaan pelanggan. Setelah failover, nama pendengar akan selalu tetap valid, sedangkan nama server pelanggan yang sebenarnya akan bergantung pada node aktual yang menjadi primer baru.

    Catatan

    Langganan harus dibuat dengan menggunakan skrip Transact-SQL dan tidak dapat dibuat menggunakan Management Studio.

  4. Untuk membuat langganan penarikan:

    1. Menggunakan contoh skrip di bagian Membuat Langganan Penarikan Replikasi Transaksional di bawah ini, buat langganan menggunakan nama pendengar grup ketersediaan pelanggan.

    2. Setelah failover, buat pekerjaan agen distribusi pada replika Utama baru menggunakan prosedur tersimpan sp_addpullsubscription_agent .

Saat Anda membuat langganan penarikan, dengan database langganan di Grup Ketersediaan, setelah setiap failover, disarankan untuk menonaktifkan pekerjaan agen distribusi pada replika Utama lama dan mengaktifkan pekerjaan pada replika utama baru.

Membuat Langganan Pendorongan Replikasi Transaksional

-- commands to execute at the publisher, in the publisher database:  
use [<publisher database name>]  
EXEC sp_addsubscription @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @destination_db = N'<subscriber database name>',   
       @subscription_type = N'Push',   
       @sync_type = N'automatic', @article = N'all', @update_mode = N'read only', @subscriber_type = 0;  
GO  
  
EXEC sp_addpushsubscription_agent @publication = N'<publication name>',   
       @subscriber = N'<availability group listener name>',   
       @subscriber_db = N'<subscriber database name>',   
       @job_login = null, @job_password = null, @subscriber_security_mode = 1;  
GO  

Membuat Langganan Pull Replikasi Transaksional

-- commands to execute at the subscriber, in the subscriber database:  
use [<subscriber database name>]  
EXEC sp_addpullsubscription @publisher= N'<publisher name>',
        @publisher_db= N'<publisher database name>',
        @publication= N'<publication name>',
        @subscription_type = N'pull';
Go

EXEC sp_addpullsubscription_agent 
        @publisher =  N'<publisher name>', 
        @subscriber = N'<availability group listener name>',
        @publisher_db= N'<publisher database name>',
        @publication= N'<publication name>' ;
        @job_login = null, @job_password = null, @subscriber_security_mode = 1;  
GO

Catatan

Saat menjalankan sp_addpullsubscription_agent untuk pelanggan yang merupakan bagian dari Grup Ketersediaan AlwaysOn, perlu meneruskan nilai parameter @Subscriber ke prosedur tersimpan sebagai nama Pendengar AG. Jika Anda menjalankan SQL Server 2016 (13.x) dan versi yang lebih lama, atau SQL Server 2017 (14.x) sebelum CU16, prosedur tersimpan tidak akan mereferensikan nama Pendengar AG; ini akan dibuat dengan nama server pelanggan tempat perintah dijalankan. Untuk mengubah masalah ini, perbarui parameter Pelanggan secara manual pada pekerjaan Agen Distribusi dengan nilai nama Pendengar AG.

Untuk Melanjutkan Agen Penggabungan Setelah Grup Ketersediaan Pelanggan Gagal

Untuk replikasi penggabungan, administrator replikasi harus mengonfigurasi ulang pelanggan secara manual dengan langkah-langkah berikut:

  1. Jalankan sp_subscription_cleanup untuk menghapus langganan lama untuk pelanggan. Lakukan tindakan ini pada replika utama baru (yang sebelumnya merupakan replika sekunder).

  2. Buat ulang langganan dengan membuat langganan baru, dimulai dengan rekam jepret baru.

Catatan

Proses saat ini tidak nyaman untuk pelanggan replikasi penggabungan, namun skenario utama untuk replikasi penggabungan adalah pengguna yang terputus (desktop, laptop, perangkat handset) yang tidak akan menggunakan grup ketersediaan AlwaysOn pada pelanggan.