Mengelola database Penerbit yang direplikasi sebagai bagian dari grup ketersediaan AlwaysOn

Berlaku untuk:SQL Server

Topik ini membahas pertimbangan khusus untuk mempertahankan database publikasi saat Anda menggunakan grup ketersediaan AlwaysOn.

Mempertahankan Database yang Diterbitkan dalam Grup Ketersediaan

Mempertahankan database publikasi AlwaysOn pada dasarnya sama dengan mempertahankan database publikasi standar, dengan pertimbangan berikut:

  • Administrasi harus terjadi di host replika utama. Dalam SQL Server Management Studio, publikasi muncul di bawah folder Publikasi Lokal untuk host replika utama dan juga untuk replika sekunder yang dapat dibaca. Setelah failover, Anda mungkin harus me-refresh Management Studio secara manual agar perubahan tercermin jika sekunder yang dipromosikan ke primer tidak dapat dibaca.

  • Monitor Replikasi selalu menampilkan informasi publikasi di bawah penerbit asli. Namun, informasi ini dapat dilihat di Monitor Replikasi dari replika apa pun dengan menambahkan penerbit asli sebagai server.

  • Saat menggunakan prosedur tersimpan atau Objek Manajemen Replikasi (RMO) untuk mengelola replikasi di primer saat ini, untuk kasus di mana Anda menentukan nama Penerbit, Anda harus menentukan nama instans tempat database diaktifkan untuk replikasi (penerbit asli). Untuk menentukan nama yang sesuai, gunakan fungsi PUBLISHINGSERVERNAME . Saat database penerbitan bergabung dengan grup ketersediaan, metadata replikasi yang disimpan dalam replika database sekunder identik dengan itu di primer. Akibatnya, untuk database publikasi yang diaktifkan untuk replikasi di primer, nama instans penerbit yang disimpan dalam tabel sistem di sekunder adalah nama primer, bukan sekunder. Ini memengaruhi konfigurasi dan pemeliharaan replikasi jika database publikasi gagal ke sekunder. Misalnya, jika Anda mengonfigurasi replikasi dengan prosedur tersimpan di sekunder setelah failover, dan Anda ingin langganan penarikan ke database publikasi yang diaktifkan di replika yang berbeda, Anda harus menentukan nama penerbit asli alih-alih penerbit saat ini sebagai parameter @publishersp_addpullsubscription atau sp_addmergepullsubscription. Namun, jika Anda mengaktifkan database publikasi setelah failover, nama instans penerbit yang disimpan dalam tabel sistem adalah nama host utama saat ini. Dalam hal ini, Anda akan menggunakan nama host replika utama saat ini untuk parameter @publisher .

    Catatan

    Untuk beberapa prosedur, seperti sp_addpublication, parameter @publisher hanya didukung untuk penerbit yang bukan instans SQL Server; dalam kasus ini, tidak relevan untuk SQL Server Always On.

  • Untuk menyinkronkan langganan di Management Studio setelah failover, sinkronkan langganan penarikan dari pelanggan dan sinkronkan langganan push dari penerbit aktif.

Menghapus Database yang Diterbitkan dari Grup Ketersediaan

Pertimbangkan masalah berikut jika database yang diterbitkan dihapus dari grup ketersediaan, atau jika grup ketersediaan yang memiliki database anggota yang diterbitkan dihilangkan.

  • Jika database publikasi di penerbit asli dihapus dari replika utama grup ketersediaan, Anda harus menjalankan sp_redirect_publisher tanpa menentukan nilai untuk parameter @redirected_publisher untuk menghapus pengalihan untuk pasangan penerbit/database.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB';  
    

    Database akan dibiarkan dalam status pemulihan di primer dan harus dipulihkan. Setelah Anda melakukan ini, replikasi harus bekerja tidak berubah terhadap Publisher asli.

  • Jika database publikasi gagal dari penerbit asli ke replika dan database dihapus dari replika utama grup ketersediaan, gunakan prosedur tersimpan sp_redirect_publisher untuk secara eksplisit mengalihkan penerbit asli ke penerbit baru. Database akan dibiarkan dalam status pemulihan dan harus dipulihkan. Setelah Anda melakukan ini, replikasi harus terus berfungsi seperti yang terjadi di bawah grup ketersediaan.

    EXEC sys.sp_redirect_publisher   
        @original_publisher = 'MyPublisher',  
        @published_database = 'MyPublishedDB',  
        @redirected_publisher = 'MyNewPublisher';  
    

    Jangan hapus server jarak jauh untuk penerbit asli dari distributor, meskipun server tidak dapat diakses lagi. Metadata server untuk penerbit asli diperlukan di distributor untuk memenuhi kueri metadata publikasi.

  • Jika grup ketersediaan lengkap dihapus, perilaku mengenai database yang direplikasi anggota sama seperti saat database yang diterbitkan dihapus dari grup ketersediaan. Replikasi dapat dilanjutkan dari primer terakhir segera setelah database dipulihkan dan pengalihan telah dimodifikasi. Jika database dipulihkan di penerbit aslinya, pengalihan harus dihapus. Jika database dipulihkan di host yang berbeda, pengalihan harus secara eksplisit diarahkan ke host baru.

    Catatan

    Saat grup ketersediaan dihapus yang telah menerbitkan database anggota, atau database yang diterbitkan dihapus dari grup ketersediaan, semua salinan database yang diterbitkan akan dibiarkan dalam status pemulihan. Jika dipulihkan, masing-masing akan muncul sebagai database yang diterbitkan. Hanya satu salinan yang harus dipertahankan dengan metadata publikasi. Untuk menonaktifkan replikasi salinan database yang diterbitkan, pertama-tama hapus semua langganan dan publikasi dari database.

    Jalankan sp_dropsubscription untuk menghapus langganan publikasi. Pastikan untuk mengatur parameter @ignore_distributor ke 1 untuk mempertahankan metadata untuk database penerbitan aktif di distributor.

    USE MyDBName;  
    GO  
    
    EXEC sys.sp_dropsubscription   
        @subscriber = 'MySubscriber',  
        @publication = 'MyPublication',  
        @article = 'all',  
        @ignore_distributor = 1;  
    

    Jalankan sp_droppublication untuk menghapus semua publikasi. Sekali lagi, atur parameter @ignore_distributor ke 1 untuk mempertahankan metadata untuk database penerbitan aktif di distributor.

    EXEC sys.sp_droppublication   
        @publication = 'MyPublication',  
        @ignore_distributor = 1;  
    

    Jalankan sp_replicationdboption untuk menonaktifkan replikasi untuk database.

    EXEC sys.sp_replicationdboption  
        @dbname = 'MyDBName',  
        @optname = 'publish',  
        @value = 'false';  
    

    Pada titik ini, salinan database yang diterbitkan dapat dipertahankan atau dihilangkan.

Menghapus penerbit asli

Mungkin ada instans (mengganti server yang lebih lama, peningkatan OS, dll.) di mana Anda ingin menghapus penerbit asli dari grup ketersediaan AlwaysOn. Ikuti langkah-langkah di bagian ini untuk menghapus penerbit dari grup ketersediaan.

Asumsikan Anda memiliki server N1, N2, dan D1, di mana N1 dan N2 adalah replika utama dan sekunder dari grup ketersediaan AG1, N1 adalah penerbit asli publikasi transaksional dan D1 adalah distributor. Anda ingin mengganti penerbit asli N1 dengan penerbit baru N3.

Untuk menghapus penerbit, ikuti langkah-langkah berikut:

  1. Instal dan konfigurasikan SQL Server ke simpul N3. Versi SQL Server harus sama dengan penerbit asli.
  2. Di server distributor D1, tambahkan N3 sebagai penerbit menggunakan sp_adddistpublisher.
  3. Konfigurasikan N3 sebagai penerbit dengan D1 sebagai distributornya.
  4. Tambahkan N3 sebagai replika ke grup ketersediaan AG1.
  5. Pada replika N3, verifikasi bahwa pelanggan push untuk publikasi muncul sebagai server yang ditautkan. Gunakan sp_addlinkedserver atau SQL Server Management Studio.
  6. Setelah N3 disinkronkan, gagalkan grup ketersediaan ke N3 sebagai utama.
  7. Hapus N1 dari grup ketersediaan AG1.

Harap pertimbangkan hal-hal berikut:

  • Jangan hapus server jarak jauh penerbit asli (N1 dalam hal ini) atau metadata apa pun yang terkait dengannya dari distributor, bahkan jika server tidak dapat lagi diakses. Metadata server untuk penerbit asli diperlukan di distributor untuk memenuhi kueri metadata publikasi dan tanpa replikasi akan gagal.
  • Untuk SQL Server 2014, setelah penerbit asli dihapus, Anda tidak akan dapat menggunakan nama penerbit asli untuk mengelola replikasi di Monitor Replikasi. Jika Anda mencoba mendaftarkan replika baru sebagai penerbit di Monitor Replikasi, informasi tidak akan ditampilkan karena tidak ada metadata yang terkait dengannya. Untuk mengelola replikasi dalam skenario ini, Anda harus mengklik kanan publikasi dan langganan individual di SQL Server Management Studio (SSMS).
  • Untuk SQL Server 2016 SP2-CU3, SQL Server 2017 CU6 ke atas, daftarkan pendengar penerbit grup ketersediaan di Replication Monitor untuk mengelola replikasi menggunakan SQL Server Management Studio versi 17.7 ke atas.

Tugas Terkait

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