Bagikan melalui


Mode Operasi Pencerminan Database

Topik ini menjelaskan mode operasi sinkron dan asinkron untuk sesi pencerminan database.

Nota

Untuk pengenalan pencerminan database, lihat Pencerminan Database (SQL Server).

Istilah dan Definisi

Bagian ini memperkenalkan beberapa istilah yang menjadi pusat topik ini.

Mode performa tinggi
Sesi pencerminan database beroperasi secara asinkron dan hanya menggunakan server utama dan server cermin. Satu-satunya bentuk pengalihan peran adalah layanan paksa (dengan kemungkinan kehilangan data).

Mode keamanan tinggi
Sesi pencerminan database beroperasi secara sinkron dan, secara opsional, menggunakan saksi, serta dapat melibatkan server utama dan server cermin.

Keamanan transaksi
Properti database khusus pencerminan yang menentukan apakah sesi pencerminan database beroperasi secara sinkron atau asinkron. Ada dua tingkat keamanan: PENUH dan NONAKTIF.

Saksi
Untuk digunakan hanya dengan mode keamanan tinggi, instans opsional SQL Server yang memungkinkan server cermin mengetahui apakah harus memulai failover otomatis. Tidak seperti dua mitra failover, saksi tidak menjalankan fungsi sebagai pelayan database. Mendukung failover otomatis adalah fungsi tunggal saksi.

Pencerminan Database Asinkron (High-Performance Mode)

Bagian ini menjelaskan cara kerja pencerminan database asinkron, ketika sesuai untuk menggunakan mode performa tinggi, dan cara merespons jika server utama gagal.

Nota

Sebagian besar edisi SQL Server 2014 hanya mendukung pencerminan database sinkron ("Safety Full Only"). Untuk informasi tentang edisi yang sepenuhnya mendukung pencerminan database, lihat "Ketersediaan Tinggi (AlwaysOn)" di Fitur yang Didukung oleh Edisi SQL Server 2014.

Ketika keamanan transaksi diatur ke NONAKTIF, sesi pencerminan database beroperasi secara asinkron. Operasi asinkron hanya mendukung satu mode operasi dengan performa tinggi. Mode ini meningkatkan performa dengan mengorbankan ketersediaan tinggi. Mode berkinerja tinggi hanya menggunakan server utama dan server cermin. Masalah pada server cermin tidak pernah berdampak pada server utama. Ketika server utama hilang, database replikasi ditandai TERPUTUS tetapi tersedia sebagai cadangan siaga yang siap.

Mode berperforma tinggi, hanya mendukung satu bentuk peralihan peran: layanan paksa (dengan kemungkinan kehilangan data), yang menggunakan server cermin sebagai server siaga hangat. Layanan paksa adalah salah satu kemungkinan respons terhadap kegagalan server utama. Karena kehilangan data dimungkinkan, Anda harus mempertimbangkan alternatif lain sebelum memaksa layanan ke cermin. Untuk informasi selengkapnya, lihat Merespons Kegagalan Prinsipal, nanti dalam topik ini.

Gambar berikut menunjukkan konfigurasi sesi menggunakan mode performa tinggi.

Konfigurasi khusus mitra dari

Dalam mode performa tinggi, segera setelah server utama mengirim log untuk transaksi ke server cermin, server utama mengirimkan konfirmasi kepada klien, tanpa menunggu pengakuan dari server cermin. Transaksi diterapkan tanpa menunggu server cermin menulis log ke disk. Operasi asinkron memungkinkan server utama untuk berjalan dengan latensi transaksi minimum.

Server cermin mencoba mengikuti catatan log yang dikirim oleh server utama. Tetapi database cermin mungkin tertinggal agak di belakang database utama, meskipun biasanya kesenjangan antara database kecil. Namun, selisih dapat menjadi substansial jika server utama berada di bawah beban kerja yang berat atau sistem server cermin mengalami kelebihan beban.

Kapan Mode High-Performance Sesuai?

Mode performa tinggi dapat berguna dalam skenario pemulihan bencana di mana server utama dan cermin dipisahkan oleh jarak yang signifikan dan di mana Anda tidak ingin kesalahan kecil berdampak pada server utama.

Nota

Pengiriman log dapat menjadi suplemen untuk pencerminan database dan merupakan alternatif yang menguntungkan untuk pencerminan database asinkron. Untuk informasi tentang keuntungan pengiriman log, lihat Solusi Ketersediaan Tinggi (SQL Server). Untuk informasi tentang menggunakan pengiriman log dengan pencerminan database, lihat Pencerminan Database dan Pengiriman Log (SQL Server).

Dampak Seorang Saksi terhadap Mode High-Performance

Jika Anda menggunakan Transact-SQL untuk mengonfigurasi mode performa tinggi, setiap kali properti SAFETY diatur ke NONAKTIF, kami sangat menyarankan agar properti WITNESS juga diatur ke NONAKTIF. Seorang saksi dapat hidup berdampingan dengan mode performa tinggi, tetapi saksi tidak memberikan manfaat dan menimbulkan risiko.

Jika saksi terputus dari sambungan ketika salah satu mitra mengalami gangguan, database menjadi tidak tersedia. Ini karena, meskipun mode performa tinggi tidak memerlukan saksi, jika satu telah ditetapkan, sesi memerlukan kuorum yang terdiri dari dua atau lebih instans server. Jika sesi kehilangan kuorum, sesi tidak dapat melayani database.

Ketika saksi digunakan dalam sesi mode kinerja tinggi, penerapan kuorum berarti bahwa:

  • Jika server cermin hilang, server utama harus menjalin koneksi dengan server saksi. Jika tidak, server utama menonaktifkan database-nya hingga baik server saksi maupun server cermin bergabung kembali dalam sesi.

  • Jika server utama hilang, untuk memaksa layanan ke server cermin, server cermin harus terhubung ke server saksi.

Menanggapi Kegagalan Prinsipal

Ketika prinsipal gagal, pemilik database memiliki beberapa pilihan, sebagai berikut:

  • Biarkan database tidak tersedia sampai prinsipal tersedia lagi.

    Jika database utama dan log transaksinya utuh, pilihan ini mempertahankan semua transaksi yang dilakukan dengan mengorbankan ketersediaan.

  • Hentikan sesi pencerminan database, perbarui database secara manual, lalu mulai sesi pencerminan database baru.

    Jika database utama hilang tetapi server utama masih berjalan, segera coba cadangkan ekor log pada database utama. Jika pencadangan log ekor berhasil, menghapus pencerminan mungkin adalah alternatif terbaik bagi Anda. Setelah menghapus pencerminan, Anda dapat memulihkan log ke database cermin sebelumnya, yang mempertahankan semua data.

    Nota

    Jika pencadangan log ekor gagal dan Anda tidak dapat menunggu server utama pulih, pertimbangkan untuk memaksa layanan, yang memiliki keuntungan mempertahankan status sesi.

  • Paksa menjalankan layanan (dengan kemungkinan kehilangan data) di server cermin.

    Layanan paksa benar-benar merupakan metode pemulihan bencana dan harus digunakan dengan hemat. Layanan pemaksaan hanya dimungkinkan jika server utama tidak berfungsi, sesi tidak sinkron (keamanan transaksi diatur ke NONAKTIF), dan sesi tidak memiliki saksi (properti WITNESS diatur ke NONAKTIF) atau saksi terhubung ke server cermin (artinya, mereka memiliki kuorum).

    Memaksa layanan ini menyebabkan server cermin menjadi peran utama dan melayani salinan databasenya untuk klien. Ketika layanan dipaksa untuk berhenti, log transaksi apa pun yang belum sempat dikirim oleh prinsipal ke server cermin akan hilang. Oleh karena itu, Anda harus membatasi layanan paksa ke situasi di mana kemungkinan kehilangan data dapat diterima dan ketersediaan database langsung sangat penting. Untuk informasi tentang cara kerja layanan paksa dan praktik terbaik untuk menggunakannya, lihat Pengalihan Peran Selama Sesi Pencerminan Database (SQL Server).

Mirroring Database Sinkron (ModeHigh-Safety)

Bagian ini menjelaskan cara kerja mirroring database sinkron, termasuk mode alternatif keamanan tinggi (dengan failover otomatis dan tanpa failover otomatis), dan berisi informasi tentang peran saksi dalam failover otomatis.

Ketika keamanan transaksi diatur ke PENUH, sesi pencerminan database berjalan dalam mode keamanan tinggi dan beroperasi secara sinkron setelah fase sinkronisasi awal. Bagian ini menjelaskan detail sesi pencerminan database yang dikonfigurasi untuk operasi sinkron.

Untuk mencapai operasi sinkron untuk sesi, server cermin harus menyinkronkan database cermin dengan database utama. Ketika sesi dimulai, server utama mulai mengirim log aktifnya ke server cermin. Server cermin menulis semua catatan log masuk ke disk secepat mungkin. Segera setelah semua rekaman log yang diterima ditulis ke disk, database disinkronkan. Selama mitra tetap berkomunikasi, database tetap disinkronkan.

Nota

Untuk memantau perubahan status dalam sesi pencerminan database, gunakan kelas peristiwa Perubahan Status Pencerminan Database . Untuk informasi selengkapnya, lihat Database Mirroring State Change Event Class.

Setelah sinkronisasi selesai, setiap transaksi yang dilakukan pada database utama juga dilakukan di server cermin, menjamin perlindungan data. Hal ini dicapai dengan menunggu untuk melakukan transaksi pada database utama, sampai server utama menerima pesan dari server cermin yang menyatakan bahwa ia telah mengeraskan log transaksi ke disk. Perhatikan bahwa menunggu pesan ini meningkatkan latensi transaksi.

Waktu yang diperlukan untuk sinkronisasi pada dasarnya tergantung pada seberapa jauh database cermin berada di belakang database utama pada awal sesi (diukur dengan jumlah catatan log yang awalnya diterima dari server utama), beban kerja pada database utama, dan kecepatan sistem cermin. Setelah sesi disinkronkan, log yang dipastikan yang belum diproses ulang pada database cermin tetap berada dalam antrian pemrosesan ulang.

Segera setelah database cermin disinkronkan, status kedua salinan database berubah menjadi SYNCHRONIZED.

Operasi sinkron dipertahankan dengan cara berikut:

  1. Saat menerima transaksi dari klien, server utama menulis log untuk transaksi ke log transaksi.

  2. Server utama menulis transaksi ke database dan, secara bersamaan, mengirim catatan log ke server cermin. Server utama menunggu penerimaan dari server cermin sebelum mengonfirmasi kepada klien salah satu dari berikut ini: pengesahan transaksi atau pembatalan transaksi.

  3. Server mirror menulis log ke disk dengan aman dan mengirimkan konfirmasi ke server utama.

  4. Saat menerima pengakuan dari server cermin, server utama mengirimkan pesan konfirmasi ke klien.

Mode keamanan tinggi melindungi data Anda dengan mengharuskan data disinkronkan di antara dua tempat. Semua transaksi yang terkomit dijamin dicatat ke disk di server pencerminan.

Mode High-Safety Tanpa Pengalihan Otomatis

Gambar berikut menunjukkan konfigurasi mode keamanan tinggi tanpa failover otomatis. Konfigurasi terdiri hanya dari kedua mitranya.

Mitra berkomunikasi tanpa saksi

Ketika mitra terhubung dan basis data sudah tersinkronisasi, pengalihan manual didukung. Jika instans server cermin tidak berfungsi, instans server utama tetap berjalan tanpa terpengaruh dan dalam kondisi terbuka (yaitu tanpa adanya pencerminan data). Jika server utama hilang, server cadangan ditangguhkan, tetapi layanan dapat dialihkan ke server cadangan (meskipun berisiko kehilangan data). Untuk informasi selengkapnya, lihat Pengalihan Peran Selama Sesi Pencerminan Database (SQL Server).

Modus High-Safety dengan Failover Otomatis

Failover otomatis memberikan ketersediaan tinggi dengan memastikan bahwa database masih dilayani setelah hilangnya satu server. Failover otomatis mengharuskan sesi memiliki instans server ketiga, yaitu saksi, yang idealnya berada di komputer ketiga. Gambar berikut menunjukkan konfigurasi sesi mode keselamatan tinggi yang mendukung failover otomatis.

Saksi dan dua mitra sesi

Tidak seperti kedua mitra, saksi tidak mengelola database. Saksi hanya mendukung failover otomatis dengan memverifikasi apakah server utama aktif dan berfungsi. Server cermin memulai failover otomatis hanya jika cermin dan saksi tetap terhubung satu sama lain setelah keduanya terputus dari server utama.

Ketika saksi mengatur, sesi memerlukan kuorum - hubungan antara setidaknya dua instans server yang memungkinkan database menjadi tersedia. Untuk informasi selengkapnya, lihat Bukti Pencerminan Database dan Kuorum: Bagaimana Bukti Memengaruhi Ketersediaan Database (Pencerminan Database).

Failover otomatis memerlukan kondisi berikut:

  • Database sudah disinkronkan.

  • Kegagalan terjadi ketika ketiga instans server terhubung, dan server saksi dan cermin tetap terhubung.

Hilangnya mitra memiliki efek berikut:

  • Jika server utama menjadi tidak tersedia dalam kondisi di atas, failover otomatis terjadi. Server cermin beralih ke peran utama, dan menawarkan databasenya sebagai database utama.

  • Jika server utama menjadi tidak tersedia ketika kondisi tersebut tidak terpenuhi, memaksa layanan (dengan kemungkinan kehilangan data) mungkin dimungkinkan. Untuk informasi selengkapnya, lihat Pengalihan Peran Selama Sesi Pencerminan Database (SQL Server).

  • Jika satu-satunya server cermin menjadi tidak tersedia, server utama dan server saksi tetap beroperasi.

Jika sesi kehilangan saksinya, kuorum memerlukan kedua mitra. Jika salah satu mitra kehilangan kuorum, kedua mitra kehilangan kuorum, dan database menjadi tidak tersedia sampai kuorum dibuat kembali. Persyaratan kuorum ini memastikan bahwa tanpa saksi database tidak pernah berjalan terekspos, yaitu tanpa pencerminan.

Nota

Jika Anda mengharapkan saksi tetap terputus untuk jangka waktu yang lama, kami sarankan Anda menghapus saksi dari sesi sampai terhubung kembali.

Pengaturan Transact-SQL dan Mode Operasi Pencerminan Database

Bagian ini menjelaskan sesi pencerminan basis data dalam hal pengaturan-pengaturan ALTER DATABASE dan status basis data serta saksi yang dicerminkan, jika ada. Bagian ini ditujukan untuk pengguna yang mengelola pencerminan database terutama atau secara eksklusif menggunakan Transact-SQL, daripada menggunakan SQL Server Management Studio.

Petunjuk / Saran

Sebagai alternatif untuk menggunakan Transact-SQL, Anda dapat mengontrol mode operasi sesi di Object Explorer menggunakan halaman Pencerminan kotak dialog Properti Database . Untuk informasi selengkapnya, lihat Membuat Sesi Pencerminan Database Menggunakan Autentikasi Windows (SQL Server Management Studio).

Bagaimana Keselamatan Transaksi dan Status Saksi Memengaruhi Mode Operasi

Mode operasi sesi ditentukan oleh kombinasi pengaturan keamanan transaksi dan status saksi. Kapan saja, pemilik database dapat mengubah tingkat keamanan transaksi, dan dapat menambahkan atau menghapus saksi.

Keamanan Transaksi

Keamanan transaksi adalah properti database khusus pencerminan yang menentukan apakah sesi pencerminan database beroperasi secara sinkron atau asinkron. Ada dua tingkat keamanan: PENUH dan NONAKTIF.

  • KEAMANAN PENUH

    Keamanan transaksi penuh menyebabkan sesi beroperasi secara sinkron dalam mode keamanan tinggi. Apabila terdapat saksi, sesi akan mendukung failover otomatis.

    Saat Anda membuat sesi menggunakan pernyataan ALTER DATABASE, sesi dimulai dengan properti SAFETY yang diatur ke PENUH; artinya, sesi dimulai dalam mode keamanan tinggi. Setelah sesi dimulai, Anda dapat menambahkan saksi.

    Untuk informasi selengkapnya, lihat Pencerminan Database Sinkron (ModeHigh-Safety), sebelumnya dalam topik ini.

  • PENGAMANAN NONAKTIF

    Mematikan keamanan transaksi menyebabkan sesi beroperasi secara asinkron, dalam mode performa tinggi. Jika properti SAFETY diatur ke NONAKTIF, properti WITNESS juga harus diatur ke NONAKTIF (default). Untuk informasi tentang dampak saksi dalam mode berkinerja tinggi, lihat Status Saksi, nanti dalam topik ini. Untuk informasi selengkapnya tentang menjalankan dengan keamanan transaksi dinonaktifkan, lihat Pencerminan Database Asinkron (ModeHigh-Performance), sebelumnya dalam topik ini.

Pengaturan keamanan transaksi database dicatat pada setiap mitra dalam tampilan katalog sys.database_mirroring di kolom mirroring_safety_level dan mirroring_safety_level_desc . Untuk informasi selengkapnya, lihat sys.database_mirroring (Transact-SQL).

Pemilik database dapat mengubah tingkat keamanan transaksi kapan saja.

Negara Saksi

Jika saksi telah ditetapkan, kuorum diperlukan, sehingga status saksi selalu signifikan.

Jika ada, saksi memiliki salah satu dari dua negara bagian:

  • Ketika saksi terhubung ke mitra, saksi berada dalam status TERSAMBUNG relatif terhadap mitra tersebut dan memiliki kuorum dengan mitra tersebut. Dalam hal ini, database dapat tersedia, bahkan jika salah satu mitra tidak tersedia.

  • Ketika saksi ada tetapi tidak terhubung ke mitra, saksi berada dalam status TIDAK DIKETAHUI atau TERPUTUS dalam kaitannya dengan mitra tersebut. Dalam hal ini, saksi tidak memiliki kuorum dengan mitra tersebut, dan jika mitra tidak terhubung satu sama lain, database menjadi tidak tersedia.

Untuk informasi tentang kuorum, lihat Kuorum: Bagaimana Bukti Memengaruhi Ketersediaan Database (Pencerminan Database).

Status setiap saksi pada instans server dicatat dalam tampilan katalog sys.database_mirroring di kolom mirroring_witness_state dan mirroring_witness_state_desc . Untuk informasi selengkapnya, lihat sys.database_mirroring (Transact-SQL).

Tabel berikut ini meringkas bagaimana mode operasi sesi tergantung pada pengaturan keamanan transaksi dan status saksi.

Mode operasi Keamanan transaksi Status saksi
Mode performa tinggi TIDAK AKTIF NULL (tidak ada saksi)2
Mode keamanan tinggi tanpa failover otomatis PENUH NULL (tidak ada saksi)
Mode keamanan tinggi dengan failover otomatis1 PENUH TERHUBUNG

1 Jika saksi terputus hubungan, kami sarankan Anda mengatur WITNESS OFF hingga instans server saksi tersedia.

2 Jika saksi hadir dalam mode performa tinggi, saksi tidak berpartisipasi dalam sidang. Namun, untuk membuat database tersedia, setidaknya dua instans server harus tetap terhubung. Oleh karena itu, kami sarankan untuk memastikan properti WITNESS diatur ke NONAKTIF dalam sesi dalam mode kinerja tinggi. Untuk informasi selengkapnya, lihat Kuorum: Bagaimana Bukti Memengaruhi Ketersediaan Database (Pencerminan Database).

Melihat Pengaturan Keselamatan dan Status Saksi

Untuk melihat pengaturan keamanan dan status saksi untuk database, gunakan tampilan katalog sys.database_mirroring . Kolom yang relevan adalah sebagai berikut:

Faktor Kolom-kolom Deskripsi
Keamanan transaksi tingkat_keamanan_cermin atau deskripsi_tingkat_keamanan_cermin Pengaturan keamanan transaksi untuk pembaruan pada database cermin, salah satu dari:

TIDAK DIKETAHUI

TIDAK AKTIF

PENUH

NULL= database tidak online.
Apakah ada saksi? mirroring_witness_name Nama server dari bukti pencerminan database atau NULL, menunjukkan bahwa tidak ada saksi.
Status saksi mirroring_witness_state atau mirroring_witness_state_desc Status saksi dalam database pada mitra tertentu:

TIDAK DIKETAHUI

TERHUBUNG

TERPUTUS

NULL = tidak ada bukti atau database tidak online.

Misalnya, pada server utama atau cermin, masukkan:

SELECT mirroring_safety_level_desc, mirroring_witness_name, mirroring_witness_state_desc FROM sys.database_mirroring  

Untuk informasi selengkapnya tentang tampilan katalog ini, lihat sys.database_mirroring (Transact-SQL).

Faktor-faktor yang Memengaruhi Perilaku dalam Kehilangan Server Utama

Tabel berikut ini meringkas efek gabungan dari pengaturan keamanan transaksi, status database, dan status saksi tentang perilaku sesi pencerminan pada hilangnya server utama.

Keamanan transaksi Status pencerminan database cermin Status saksi Perilaku ketika entitas utama hilang
PENUH DISINKRONISASI TERHUBUNG Failover otomatis terjadi.
PENUH DISINKRONISASI TERPUTUS Server mirror berhenti; failover tidak dapat dilakukan, dan database tidak dapat diakses.
TIDAK AKTIF DITANGGUHKAN atau TERPUTUS KONEKSINYA NULL (tidak ada saksi) Layanan dapat dipindahkan secara paksa ke server cermin (dengan kemungkinan kehilangan data).
PENUH MENSINKRONKAN atau DITANGGUHKAN NULL (tidak ada saksi) Layanan dapat diarahkan ke server pencerminan (dengan kemungkinan kehilangan data).

Tugas Terkait

Lihat Juga

Memantau Pencerminan Database (SQL Server)
Bukti Pencerminan Database