Mengonfigurasi Replikasi untuk Grup Ketersediaan AlwaysOn (SQL Server)

Mengonfigurasi replikasi SQL Server dan grup ketersediaan AlwaysOn melibatkan tujuh langkah. Setiap langkah dijelaskan secara lebih rinci di bagian berikut.

1. Mengonfigurasi Publikasi dan Langganan Database

Mengonfigurasi distributor

Distributor tidak boleh menjadi host untuk replika saat ini (atau yang direncanakan) dari grup ketersediaan tempat database penerbitan menjadi (atau akan menjadi) anggota.

  1. Konfigurasikan distribusi di distributor. Jika prosedur tersimpan sedang digunakan untuk konfigurasi, jalankan sp_adddistributor. Gunakan parameter @password untuk mengidentifikasi kata sandi yang akan digunakan saat penerbit jarak jauh tersambung ke distributor. Kata sandi juga akan diperlukan di setiap penerbit jarak jauh saat distributor jarak jauh disiapkan.

    USE master;  
    GO  
    EXEC sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = '**Strong password for distributor**';  
    
  2. Buat database distribusi di distributor. Jika prosedur tersimpan sedang digunakan untuk konfigurasi, jalankan sp_adddistributiondb.

    USE master;  
    GO  
    EXEC sys.sp_adddistributiondb  
        @database = 'distribution',  
        @security_mode = 1;  
    
  3. Mengonfigurasi penerbit jarak jauh. Jika prosedur tersimpan digunakan untuk mengonfigurasi distributor, jalankan sp_adddistpublisher. Parameter @security_mode digunakan untuk menentukan bagaimana prosedur tersimpan validasi penerbit yang dijalankan dari agen replikasi, terhubung ke primer saat ini. Jika diatur ke 1 autentikasi Windows digunakan untuk menyambungkan ke primer saat ini. Jika diatur ke 0, autentikasi SQL Server digunakan dengan nilai @login dan @password yang ditentukan. Login dan kata sandi yang ditentukan harus valid di setiap replika sekunder agar prosedur tersimpan validasi berhasil tersambung ke replika tersebut.

    Nota

    Jika ada agen replikasi yang dimodifikasi yang dijalankan pada komputer selain distributor, penggunaan autentikasi Windows untuk koneksi ke primer akan mengharuskan autentikasi Kerberos dikonfigurasi untuk komunikasi antara komputer host replika. Penggunaan login SQL Server untuk koneksi ke primer saat ini tidak akan memerlukan autentikasi Kerberos.

    USE master;  
    GO  
    EXEC sys.sp_adddistpublisher  
        @publisher = 'AGPrimaryReplicaHost',  
        @distribution_db = 'distribution',  
        @working_directory = '\\MyReplShare\WorkingDir',  
        @login = 'MyPubLogin',  
        @password = '**Strong password for publisher**';  
    

Untuk informasi selengkapnya, lihat sp_adddistpublisher (Transact-SQL).

Mengonfigurasi penerbit di penerbit asli

  1. Mengonfigurasi distribusi jarak jauh. Jika prosedur tersimpan digunakan untuk mengonfigurasi penerbit, jalankan sp_adddistributor. Tentukan nilai yang sama untuk @password seperti yang digunakan saat sp_adddistrbutor dijalankan di distributor untuk menyiapkan distribusi.

    exec sys.sp_adddistributor  
        @distributor = 'MyDistributor',  
        @password = 'MyDistPass'  
    
  2. Aktifkan database untuk replikasi. Jika prosedur tersimpan digunakan untuk mengonfigurasi penerbit, jalankan sp_replicationdboption. Jika replikasi transaksional dan penggabungan akan dikonfigurasi untuk database, masing-masing harus diaktifkan.

    USE master;  
    GO  
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'true';  
    
    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'merge publish',  
        @value = 'true';  
    
  3. Buat publikasi, artikel, dan langganan replikasi. Untuk informasi selengkapnya tentang cara mengonfigurasi replikasi, lihat Menerbitkan objek Data dan Database.

2. Konfigurasikan Grup Ketersediaan AlwaysOn

Pada primer yang dimaksudkan, buat grup ketersediaan dengan database yang diterbitkan (atau akan diterbitkan) sebagai database anggota. Jika menggunakan Wizard Grup Ketersediaan, Anda dapat mengizinkan wizard untuk awalnya menyinkronkan database replika sekunder atau Anda bisa melakukan inisialisasi secara manual dengan menggunakan pencadangan dan pemulihan.

Buat pendengar DNS untuk grup ketersediaan yang akan digunakan oleh agen replikasi untuk menyambungkan ke primer saat ini. Nama pendengar yang ditentukan akan digunakan sebagai target pengalihan untuk pasangan database penerbit/yang diterbitkan asli. Misalnya, jika Anda menggunakan DDL untuk mengonfigurasi grup ketersediaan, contoh kode berikut dapat digunakan untuk menentukan listener grup ketersediaan untuk grup ketersediaan yang sudah ada bernama MyAG:

ALTER AVAILABILITY GROUP 'MyAG'   
    ADD LISTENER 'MyAGListenerName' (WITH IP (('10.120.19.155', '255.255.254.0')));  

Untuk informasi selengkapnya, lihat Pembuatan dan Konfigurasi Grup Ketersediaan (SQL Server).

3. Memastikan bahwa semua Host Replika Sekunder Dikonfigurasi untuk Replikasi

Pada setiap host replika sekunder, verifikasi bahwa SQL Server telah dikonfigurasi untuk mendukung replikasi. Kueri berikut dapat dijalankan di setiap host replika sekunder untuk menentukan apakah replikasi diinstal:

USE master;  
GO  
DECLARE @installed int;  
EXEC @installed = sys.sp_MS_replication_installed;  
SELECT @installed;  

Jika @installed adalah 0, replikasi harus ditambahkan ke penginstalan SQL Server.

4. Konfigurasikan Host Replika Sekunder sebagai Penerbit Replikasi

Replika sekunder tidak dapat bertindak sebagai penerbit replikasi atau penerbit ulang, tetapi replikasi harus dikonfigurasi agar replika sekunder dapat mengambil alih setelah terjadi failover. Di distributor, konfigurasikan distribusi untuk setiap host replika sekunder. Tentukan database distribusi dan direktori kerja yang sama seperti yang ditentukan saat penerbit asli ditambahkan ke distributor. Jika Anda menggunakan prosedur tersimpan untuk mengonfigurasi distribusi, gunakan sp_adddistpublisher untuk mengaitkan penerbit jarak jauh dengan distributor. Jika @login dan @password digunakan untuk penerbit asli, tentukan nilai yang sama untuk masing-masing saat Anda menambahkan host replika sekunder sebagai penerbit.

EXEC sys.sp_adddistpublisher  
    @publisher = 'AGSecondaryReplicaHost',  
    @distribution_db = 'distribution',  
    @working_directory = '\\MyReplShare\WorkingDir',  
    @login = 'MyPubLogin',  
    @password = '**Strong password for publisher**';  

Di setiap host replika sekunder, konfigurasikan distribusi. Identifikasi distributor penerbit asli sebagai distributor jarak jauh. Gunakan kata sandi yang sama seperti yang digunakan saat sp_adddistributor dijalankan awalnya di distributor. Jika prosedur tersimpan digunakan untuk mengonfigurasi distribusi, parameter @passwordsp_adddistributor digunakan untuk menentukan kata sandi.

EXEC sp_adddistributor   
    @distributor = 'MyDistributor',  
    @password = '**Strong password for distributor**';  

Di setiap host replika sekunder, pastikan bahwa pelanggan pendorongan publikasi database muncul sebagai server tertaut. Jika prosedur tersimpan digunakan untuk mengonfigurasi penerbit jarak jauh, gunakan sp_addlinkedserver untuk menambahkan subcriber (jika belum ada) sebagai server tertaut ke penerbit.

EXEC sys.sp_addlinkedserver   
    @server = 'MySubscriber';  

5. Alihkan Penerbit Asli ke AG Listener Name

Di distributor, dalam database distribusi, jalankan prosedur tersimpan sp_redirect_publisher untuk mengaitkan penerbit asli dan database yang diterbitkan dengan nama pendengar grup ketersediaan.

USE distribution;  
GO  
EXEC sys.sp_redirect_publisher   
@original_publisher = 'MyPublisher',  
    @publisher_db = 'MyPublishedDB',  
    @redirected_publisher = 'MyAGListenerName';  

6. Jalankan Prosedur Tersimpan Validasi Replikasi untuk Memverifikasi Konfigurasi

Di distributor, dalam database distribusi, jalankan prosedur tersimpan sp_validate_replica_hosts_as_publishers untuk memverifikasi bahwa semua host replika sekarang dikonfigurasi untuk berfungsi sebagai penerbit untuk database yang diterbitkan.

USE distribution;  
GO  
DECLARE @redirected_publisher sysname;  
EXEC sys.sp_validate_replica_hosts_as_publishers  
    @original_publisher = 'MyPublisher',  
    @publisher_db = 'MyPublishedDB',  
    @redirected_publisher = @redirected_publisher output;  

Prosedur tersimpan sp_validate_replica_hosts_as_publishers harus dijalankan dari login yang memiliki otorisasi memadai pada setiap host replika grup ketersediaan untuk mendapatkan informasi tentang grup ketersediaan tersebut. Tidak seperti sp_validate_redirected_publisher, ia menggunakan kredensial pemanggil dan tidak menggunakan login yang disimpan di msdb.dbo.MSdistpublishers untuk terhubung ke replika grup ketersediaan.

Nota

sp_validate_replica_hosts_as_publishers akan gagal dengan kesalahan berikut saat memvalidasi host replika sekunder yang tidak mengizinkan akses baca, atau mengharuskan niat baca ditentukan.

Msg 21899, Tingkat 11, Status 1, Prosedur sp_hadr_verify_subscribers_at_publisher, Baris 109

Kueri di penerbit 'MyReplicaHostName' yang dialihkan untuk menentukan apakah ada entri sysserver untuk pelanggan penerbit asli 'MyOriginalPublisher' gagal dengan kesalahan '976', pesan kesalahan 'Kesalahan 976, Tingkat 14, Status 1, Pesan: Database target, 'MyPublishedDB', berpartisipasi dalam grup ketersediaan dan saat ini tidak dapat diakses untuk kueri. Pergerakan data ditangguhkan atau replika ketersediaan tidak diaktifkan untuk akses baca. Untuk mengizinkan akses baca-saja ke database ini dan database lain dalam grup ketersediaan, aktifkan akses baca ke satu atau beberapa replika ketersediaan sekunder dalam grup. Untuk informasi selengkapnya, lihat ALTER AVAILABILITY GROUP pernyataan di SQL Server Books Online.'.

Satu atau beberapa kesalahan validasi penerbit ditemukan untuk host replika 'MyReplicaHostName'.

Ini adalah perilaku yang diharapkan. Anda harus memverifikasi keberadaan entri server pelanggan di host replika sekunder ini dengan mengkueri entri sysserver langsung di host.

7. Tambahkan Penerbit Asli ke Monitor Replikasi

Di setiap replika grup ketersediaan, tambahkan penerbit asli ke Monitor Replikasi.

Tugas Terkait

Replikasi

Untuk membuat dan mengonfigurasi grup ketersediaan

Lihat Juga

Prasyarat, Pembatasan, dan Rekomendasi untuk Grup Ketersediaan AlwaysOn (SQL Server)
Gambaran Umum Grup Ketersediaan AlwaysOn (SQL Server)
Grup Ketersediaan AlwaysOn: Interoperabilitas (SQL Server)
Replikasi SQL Server