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. Pembaruan 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, server mirror menjadi server utama. Dalam topik ini, "prinsipal" dan "cermin" selalu merujuk pada prinsipal dan cermin asli.

Persyaratan dan Pertimbangan untuk Menggunakan Replikasi dengan Pencerminan Database

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

  • Prinsipal dan mirror harus menggunakan Distributor yang sama. Kami menyarankan agar ini menjadi Distributor jarak jauh, yang memberikan toleransi kesalahan yang lebih besar jika Publisher memiliki failover yang tidak direncanakan.

  • Replikasi mendukung pencerminan database publikasi untuk replikasi penggabungan dan untuk replikasi transaksional dengan Pelanggan baca-saja atau pelanggan pembaruan antrean. 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 Basis Data

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

  1. Konfigurasikan Publisher.

  2. Konfigurasikan pencerminan database.

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

  4. Konfigurasikan agen replikasi untuk failover.

  5. Tambahkan utama dan mirror ke Replication Monitor.

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

Untuk mengonfigurasi pencerminan basis data untuk basis data publikasi

  1. Konfigurasikan Penerbit:

    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. Konfigurasikan 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 mirror sebagai Publisher, dan tentukan Distributor serta folder snapshot yang sama dengan yang digunakan principal. Misalnya, jika Anda mengonfigurasi replikasi dengan prosedur tersimpan, jalankan sp_adddistpublisher di Distributor; lalu 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 transaksional)

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

    • Gabungkan Agen (untuk gabungkan langganan)

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

    • Kontrol ActiveX SQL Merge (untuk langganan merge yang disinkronkan dengan kontrol ini)

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

    Perubahan parameter agen akan berlaku pada saat agen berikutnya dijalankan. Jika agen berjalan terus menerus, Anda harus menghentikan dan memulai ulang agen. Parameter dapat ditetapkan dalam profil agen dan melalui prompt perintah. Untuk informasi selengkapnya, lihat:

    Kami merekomendasikan untuk menambahkan -PublisherFailoverPartner ke profil agen, lalu menentukan nama mirror dalam profil tersebut. 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 utama dan mirror ke Replication Monitor. Untuk informasi selengkapnya, lihat Menambahkan dan Menghapus Penerbit dari Monitor Replikasi.

Memelihara Basis Data Publikasi yang Dicerminkan

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 server mirror, publikasi ditampilkan pada server mirror dan tidak lagi ditampilkan pada server principal. Jika database beralih ke server mirror, Anda mungkin perlu menyegarkan Management Studio dan Replication Monitor secara manual agar perubahan tersebut ditampilkan.

  • Monitor Replikasi menampilkan simpul Publisher di pohon objek untuk baik server utama maupun server cermin. Jika server utama adalah server aktif, informasi publikasi hanya akan ditampilkan di bawah node utama di Monitor Replikasi.

    Jika cermin adalah server aktif:

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

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

  • 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 fungsi publishingservername.

    Saat database publikasi dicerminkan, metadata replikasi yang disimpan dalam database cermin identik dengan metadata yang disimpan dalam database utama. Oleh karena itu, untuk database publikasi yang replikasinya diaktifkan pada prinsipal, nama instans Publisher yang disimpan dalam tabel sistem pada cermin adalah nama prinsipal, bukan cermin. Hal ini memengaruhi konfigurasi dan pemeliharaan replikasi jika database publikasi beralih ke basis data cermin saat terjadi failover. Misalnya, jika Anda mengonfigurasi replikasi dengan prosedur tersimpan pada mirror setelah failover, dan Anda ingin menambahkan langganan pull ke database publikasi yang diaktifkan pada principal, Anda harus menentukan nama principal, bukan nama mirror, untuk parameter @publisher dari sp_addpullsubscription atau sp_addmergepullsubscription.

    Jika Anda mengaktifkan database publikasi pada mirror setelah failover ke mirror, nama instans Publisher yang disimpan dalam tabel sistem adalah nama mirror; dalam hal ini, Anda akan menggunakan nama mirror 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 subskripsi di Management Studio setelah terjadi failover: sinkronkan subskripsi pull dari Subscriber; dan sinkronkan subskripsi push dari Publisher yang aktif.

Perilaku Replikasi jika Pencerminan Dihapus

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

  • Jika database publikasi pada server principal tidak lagi dicerminkan, replikasi tetap berfungsi tanpa perubahan terhadap server principal asli.

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

  • Jika pencerminan database dihentikan sepenuhnya, database cermin berada dalam status pemulihan dan harus dipulihkan agar dapat berfungsi kembali. 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 saat database publikasi lainnya tidak tersedia. Opsi ini tidak didukung jika database publikasi lain masih utuh dan sedang bereplikasi. 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. Server utama tidak dapat melakukan failover ke server mirror sampai server mirror kembali online dan telah memiliki semua transaksi dari server utama.
Mode performa tinggi Jika server mirror tidak tersedia, database utama berjalan tanpa perlindungan mirror (yakni, tanpa mirror). Namun, Log Reader Agent hanya mereplikasi transaksi yang sudah ditulis ke server mirror. Jika pengalihan layanan dipaksakan dan server cermin mengambil alih peran server utama, Agen Pembaca Log akan bekerja pada server cermin dan mulai mengambil transaksi baru.

Perlu diketahui bahwa latensi replikasi akan meningkat jika server mirror tertinggal dari server utama.
Mode keamanan tinggi tanpa failover otomatis Semua transaksi yang telah di-commit dijamin telah ditulis secara permanen ke disk pada mirror. 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)