Pelanggan replikasi dan grup ketersediaan AlwaysOn (SQL Server)

Berlaku untuk:SQL Server

Ketika grup ketersediaan AlwaysOn (AG) gagal, yang berisi database yang merupakan pelanggan replikasi, 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

SQL Server replikasi mendukung failover otomatis penerbit dan failover otomatis pelanggan transaksional. Pelanggan gabungan dapat menjadi bagian dari AG, namun tindakan manual diperlukan untuk mengonfigurasi pelanggan baru setelah failover. AG tidak dapat dikombinasikan dengan skenario WebSync dan SQL Server Compact.

Membuat langganan transaksional dalam grup ketersediaan

Untuk replikasi transaksional, gunakan langkah-langkah berikut untuk mengonfigurasi dan melakukan failover pada AG pelanggan:

  1. Sebelum membuat langganan, tambahkan database pelanggan ke AG yang sesuai.

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

  3. Menggunakan skrip di bagian Buat langganan push replikasi transaksional , buat langganan menggunakan nama pendengar AG pelanggan. Setelah failover, nama pendengar akan selalu tetap valid, sedangkan nama server pelanggan yang sebenarnya akan bergantung pada simpul 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 Buat langganan penarikan replikasi transaksional , buat langganan menggunakan nama pendengar AG 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 AG, setelah setiap failover, disarankan untuk menonaktifkan pekerjaan agen distribusi pada replika utama lama dan mengaktifkan pekerjaan pada replika utama baru.

Membuat langganan push replikasi transaksional

-- commands to execute at the publisher, in the publisher database:
USE [<publisher database name>];
GO

EXEC sp_addsubscription @publication = N'<publication name>',
    @subscriber = N'<AG 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'<AG listener name>',
    @subscriber_db = N'<subscriber database name>',
    @job_login = NULL,
    @job_password = NULL,
    @subscriber_security_mode = 1;
GO

Membuat langganan penarikan replikasi transaksional

-- commands to execute at the subscriber, in the subscriber database:
USE [<subscriber database name>];
GO

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'<AG listener name>',
    @distributor = N'<distributor AG listener name>', -- this parameter should only be used if the distribution database is part of an AG.
    @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 AG, Anda harus meneruskan @Subscriber nilai parameter 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 CU 16, prosedur tersimpan tidak akan mereferensikan nama pendengar AG; itu akan dibuat dengan nama server pelanggan tempat perintah dijalankan. Untuk mengatasi masalah ini, perbarui @Subscriber parameter secara manual pada pekerjaan Agen Distribusi dengan nilai nama pendengar AG.

Lanjutkan penggabungan agen 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 AG pada pelanggan.

Lihat juga