Bagikan melalui


Mengonfigurasi replikasi dengan grup ketersediaan AlwaysOn

Berlaku untuk:SQL Server di Windows

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

Database distribusi tidak dapat ditempatkan dalam grup ketersediaan dengan SQL Server 2012 dan SQL Server 2014. Menempatkan database distribusi ke dalam grup ketersediaan didukung dengan SQL 2016 dan lebih besar, kecuali untuk database distribusi yang digunakan dalam topologi replikasi gabungan, dua arah, atau peer-to-peer. Untuk informasi selengkapnya, lihat Menyiapkan database distribusi replikasi di grup ketersediaan AlwaysOn.

  1. Konfigurasikan distribusi di distributor. Jika prosedur tersimpan 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
    
    EXECUTE sys.sp_adddistributor
        @distributor = 'MyDistributor',
        @password = '**Strong password for distributor**';
    
  2. Buat database distribusi di distributor. Jika prosedur tersimpan digunakan untuk konfigurasi, jalankan sp_adddistributiondb

    USE master;
    GO
    
    EXECUTE 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, tersambung dengan primer yang sedang aktif. 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.

    Catatan

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

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.

    EXECUTE 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 harus dikonfigurasi untuk database, masing-masing harus diaktifkan.

    USE master;
    GO
    
    EXECUTE sys.sp_replicationdboption
        @dbname = 'MyDBName',
        @optname = 'publish',
        @value = 'true';
    
    EXECUTE 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. Mengonfigurasi grup ketersediaan

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. Pastikan 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 AS INT;

EXECUTE @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 atau penerbit ulang replikasi, 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.

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

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

EXECUTE sys.sp_addlinkedserver @server = 'MySubscriber';

5. Alihkan penerbit asli ke nama pendengar AG

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

EXECUTE 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 AS sysname;

EXECUTE 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 menyambungkan ke replika grup ketersediaan.

Kesalahan saat memvalidasi host replika sekunder

sp_validate_replica_hosts_as_publishers gagal dengan kesalahan berikut saat memvalidasi host replika sekunder yang tidak mengizinkan akses baca, atau yang memerlukan niat baca dinyatakan secara eksplisit.

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 pernyataan UBAH GRUP KETERSEDIAAN 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.

Replikasi

Membuat dan mengonfigurasi grup ketersediaan