Pencerminan dan Replikasi Database (SQL Server)

Berlaku untuk:SQL Server

Pencerminan database dapat digunakan bersama dengan replikasi untuk meningkatkan ketersediaan untuk database publikasi. Pencerminan database melibatkan dua salinan database tunggal yang biasanya berada di komputer yang berbeda. Pada waktu tertentu, hanya satu salinan database yang saat ini tersedia untuk klien. Salinan ini dikenal sebagai database utama. Updates yang dibuat oleh klien ke database utama diterapkan pada salinan database lainnya, yang dikenal sebagai database cermin. Pencerminan melibatkan penerapan log transaksi dari setiap penyisipan, pembaruan, atau penghapusan yang dilakukan pada database utama ke database cermin.

Failover replikasi ke cermin didukung penuh untuk database publikasi, dengan dukungan terbatas untuk database langganan. Pencerminan database tidak didukung untuk database distribusi. Untuk informasi tentang memulihkan database distribusi atau database langganan tanpa perlu mengonfigurasi ulang replikasi, lihat Mencadangkan dan Memulihkan Database yang Direplikasi.

Catatan

Setelah failover, cermin menjadi prinsipal. Dalam topik ini, "utama" dan "cermin" selalu merujuk ke prinsipal dan cermin asli.

Persyaratan dan Pertimbangan untuk Menggunakan Replikasi dengan Pencerminan Database

Perhatikan persyaratan dan pertimbangan berikut saat menggunakan replikasi dengan pencerminan database:

  • Perwakilan dan cermin harus berbagi Distributor. Kami menyarankan agar ini menjadi Distributor jarak jauh, yang memberikan toleransi kesalahan yang lebih besar jika Penerbit memiliki failover yang tidak direncanakan.

  • Replikasi mendukung pencerminan database publikasi untuk replikasi penggabungan dan untuk replikasi transaksional dengan Pelanggan baca-saja atau pelanggan yang diantrikan. Segera memperbarui Pelanggan, Penerbit Oracle, Penerbit dalam topologi peer-to-peer, dan penerbitan ulang tidak didukung.

  • Metadata dan objek yang ada di luar database tidak disalin ke cermin, termasuk login, pekerjaan, server tertaut, dan sebagainya. Jika Anda memerlukan metadata dan objek di cermin, Anda harus menyalinnya secara manual. Untuk informasi selengkapnya, lihat Manajemen Login dan Pekerjaan Setelah Pengalihan Peran (SQL Server).

Mengonfigurasi Replikasi dengan Pencerminan Database

Mengonfigurasi replikasi dan pencerminan database melibatkan lima langkah. Setiap langkah dijelaskan secara lebih rinci di bagian berikut.

  1. Mengonfigurasi Publisher.

  2. Mengonfigurasi pencerminan database.

  3. Konfigurasikan cermin untuk menggunakan Distributor yang sama dengan prinsipal.

  4. Mengonfigurasi agen replikasi untuk failover.

  5. Tambahkan prinsipal dan cermin ke Monitor Replikasi.

Langkah 1 dan 2 juga dapat dilakukan dalam urutan yang berlawanan.

Untuk mengonfigurasi pencerminan database untuk database publikasi

  1. Mengonfigurasi Publisher:

    1. Sebaiknya gunakan Distributor jarak jauh. Untuk informasi selengkapnya tentang mengonfigurasi distribusi, lihat Mengonfigurasi Distribusi.

    2. Anda dapat mengaktifkan database untuk rekam jepret dan publikasi transaksi dan/atau menggabungkan publikasi. Untuk database cermin yang akan berisi lebih dari satu jenis publikasi, Anda harus mengaktifkan database untuk kedua jenis pada simpul yang sama menggunakan sp_replicationdboption. Misalnya, Anda dapat menjalankan panggilan prosedur tersimpan berikut di prinsipal:

      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='publish', @value=true;  
      exec sp_replicationdboption @dbname='<PublicationDatabase>', @optname='mergepublish', @value=true;  
      

      Untuk informasi selengkapnya tentang membuat publikasi, lihat Menerbitkan Data dan Objek Database.

  2. Mengonfigurasi pencerminan database. Untuk informasi selengkapnya, lihat Membuat Sesi Pencerminan Database Menggunakan Autentikasi Windows (SQL Server Management Studio) dan Menyiapkan Pencerminan Database (SQL Server).

  3. Mengonfigurasi distribusi untuk cermin. Tentukan nama cermin sebagai Penerbit, dan tentukan folder Distributor dan rekam jepret yang sama dengan yang digunakan prinsipal. Misalnya, jika Anda mengonfigurasi replikasi dengan prosedur tersimpan, jalankan sp_adddistpublisher di Distributor; dan kemudian jalankan sp_adddistributor di cermin. Untuk sp_adddistpublisher:

    • Atur nilai parameter @publisher ke nama jaringan cermin.

    • Atur nilai parameter @working_directory ke folder rekam jepret yang digunakan oleh prinsipal.

  4. Tentukan nama cermin untuk parameter agen -PublisherFailoverPartner . Agen Parameter ini diperlukan bagi agen berikut untuk mengidentifikasi cermin setelah failover:

    • Agen Rekam Jepret (untuk semua publikasi)

    • Agen Pembaca Log (untuk semua publikasi transaksi)

    • Agen Pembaca Antrean (untuk publikasi transaksional yang mendukung pembaruan langganan antrean)

    • Agen Penggabungan (untuk langganan gabungan)

    • pendengar replikasi SQL Server (replisapi.dll: untuk menggabungkan langganan yang disinkronkan menggunakan sinkronisasi Web)

    • Kontrol ActiveX Gabungan SQL (untuk langganan gabungan yang disinkronkan dengan kontrol)

    Agen Distribusi dan Kontrol Distribusi ActiveX tidak memiliki parameter ini karena tidak tersambung ke Publisher.

    Perubahan parameter agen berlaku saat agen dimulai lagi. Jika agen berjalan terus menerus, Anda harus menghentikan dan memulai ulang agen. Parameter dapat ditentukan dalam profil agen dan dari prompt perintah. Untuk informasi selengkapnya, lihat:

    Sebaiknya tambahkan -PublisherFailoverPartner ke profil agen, lalu tentukan nama cermin di profil. Misalnya, jika Anda mengonfigurasi replikasi dengan prosedur tersimpan:

    -- Execute sp_help_agent_profile in the context of the distribution database to get the list of profiles.  
    -- Select the profile id of the profile that needs to be updated from the result set.  
    -- In the agent_type column returned by sp_help_agent_profile:   
    -- 1 = Snapshot Agent; 2 = Log Reader Agent; 3 = Distribution Agent; 4 = Merge Agent; 9 = Queue Reader Agent.  
    
    exec sp_help_agent_profile;  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Snapshot Agent profile (profile 1).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 1, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
    -- Setting the -PublisherFailoverPartner parameter in the default Merge Agent profile (profile 6).  
    -- Execute sp_add_agent_parameter in the context of the distribution database.  
    exec sp_add_agent_parameter @profile_id = 6, @parameter_name = N'-PublisherFailoverPartner', @parameter_value = N'<Failover Partner Name>';  
    
  5. Tambahkan prinsipal dan cermin ke Monitor Replikasi. Untuk informasi selengkapnya, lihat Menambahkan dan Menghapus Penerbit dari Monitor Replikasi.

Mempertahankan Database Publikasi Cermin

Mempertahankan database publikasi cermin pada dasarnya sama dengan mempertahankan database yang tidak dicerminkan, dengan pertimbangan berikut:

  • Administrasi dan pemantauan harus terjadi di server aktif. Di SQL Server Management Studio, publikasi muncul di bawah folder Publikasi Lokal hanya untuk server aktif. Misalnya, jika Anda melakukan failover ke cermin, publikasi ditampilkan di cermin dan tidak lagi ditampilkan di prinsipal. Jika database gagal ke cermin, Anda mungkin perlu me-refresh Management Studio dan Monitor Replikasi secara manual agar perubahan tercermin.

  • Monitor Replikasi menampilkan simpul Penerbit di pohon objek untuk prinsipal dan cermin. Jika prinsipal adalah server aktif, informasi publikasi hanya ditampilkan di bawah simpul utama di Monitor Replikasi.

    Jika cermin adalah server aktif:

    • Jika agen memiliki kesalahan, kesalahan hanya ditunjukkan pada simpul utama, bukan pada node cermin.

    • Jika prinsipal tidak tersedia, simpul utama dan cermin menampilkan daftar publikasi yang identik. Pemantauan harus dilakukan pada publikasi di bawah node cermin.

  • Saat menggunakan prosedur tersimpan atau Objek Manajemen Replikasi (RMO) untuk mengelola replikasi di cermin, untuk kasus di mana Anda menentukan nama Penerbit, Anda harus menentukan nama instans tempat database diaktifkan untuk replikasi. Untuk menentukan nama yang sesuai, gunakan nama server penerbitan fungsi.

    Saat database publikasi dicerminkan, metadata replikasi yang disimpan dalam database cermin identik dengan metadata yang disimpan dalam database utama. Akibatnya, untuk database publikasi yang diaktifkan untuk replikasi pada prinsipal, nama instans Penerbit yang disimpan dalam tabel sistem di cermin adalah nama utama, bukan cermin. Ini memengaruhi konfigurasi dan pemeliharaan replikasi jika database publikasi gagal ke cermin. Misalnya, jika Anda mengonfigurasi replikasi dengan prosedur tersimpan di cermin setelah failover, dan Anda ingin menambahkan langganan pull ke database publikasi yang diaktifkan di prinsipal, Anda harus menentukan nama utama daripada nama cermin untuk parameter @publishersp_addpullsubscription atau sp_addmergepullsubscription.

    Jika Anda mengaktifkan database publikasi di cermin setelah failover ke cermin, nama instans Publisher yang disimpan dalam tabel sistem adalah nama cermin; dalam hal ini, Anda akan menggunakan nama cermin untuk parameter @publisher .

    Catatan

    Dalam beberapa kasus, seperti sp_addpublication, parameter @publisher hanya didukung untuk Penerbit non-SQL Server; dalam kasus ini, tidak relevan untuk pencerminan database SQL Server.

  • Untuk menyinkronkan langganan di Management Studio setelah failover: sinkronkan langganan penarikan dari Pelanggan; dan menyinkronkan langganan push dari Publisher aktif.

Perilaku Replikasi jika Pencerminan Dihapus

Ingatlah masalah berikut jika pencerminan database dihapus dari database yang diterbitkan:

  • Jika database publikasi di prinsipal tidak lagi dicerminkan, replikasi terus bekerja tidak berubah terhadap prinsipal asli.

  • Jika database publikasi gagal dari utama ke cermin dan hubungan pencerminan kemudian dinonaktifkan atau dihapus, agen replikasi tidak akan berfungsi terhadap cermin. Jika prinsipal hilang secara permanen, nonaktifkan lalu konfigurasi ulang replikasi dengan cermin yang ditentukan sebagai Penerbit.

  • Jika pencerminan database dihapus sepenuhnya, database cermin dalam keadaan pemulihan dan harus dipulihkan agar dapat berfungsi. Perilaku database yang dipulihkan sehubungan dengan replikasi tergantung pada apakah opsi KEEP_REPLICATION ditentukan. Opsi ini memaksa operasi pemulihan untuk mempertahankan pengaturan replikasi saat memulihkan database yang diterbitkan ke server selain itu di mana cadangan dibuat. Gunakan opsi KEEP_REPLICATION hanya jika database publikasi lainnya tidak tersedia. Opsi ini tidak didukung jika database publikasi lainnya masih utuh dan mereplikasi. Untuk informasi selengkapnya tentang KEEP_REPLICATION, lihat RESTORE (Transact-SQL).

Perilaku Agen Pembaca Log

Tabel berikut ini menjelaskan perilaku Agen Pembaca Log untuk berbagai mode operasi pencerminan database.

Mode operasi Perilaku Agen Pembaca Log jika cermin tidak tersedia
Mode keamanan tinggi dengan failover otomatis Jika cermin tidak tersedia, Agen Pembaca Log menyebarkan perintah ke database distribusi. Prinsipal tidak dapat melakukan failover ke cermin sampai cermin kembali online dan memiliki semua transaksi dari prinsipal.
Mode performa tinggi Jika cermin tidak tersedia, database utama berjalan terekspos (yaitu, tidak disarankan). Namun, Agen Pembaca Log hanya mereplikasi transaksi yang diperkeras di cermin. Jika layanan dipaksakan dan server cermin mengasumsikan peran utama, Agen Pembaca Log akan bekerja melawan cermin dan mulai mengambil transaksi baru.

Ketahuilah bahwa latensi replikasi akan meningkat jika cermin berada di belakang prinsipal.
Mode keamanan tinggi tanpa failover otomatis Semua transaksi yang berkomitmen dijamin akan diperkeras ke disk di cermin. Agen Pembaca Log hanya mereplikasi transaksi yang diperkeras di cermin. Jika cermin tidak tersedia, prinsipal melarang aktivitas lebih lanjut dalam database; oleh karena itu, Agen Pembaca Log tidak memiliki transaksi untuk direplikasi.

Lihat juga

Replikasi SQL Server
Pengiriman dan Replikasi Log (SQL Server)