Bagikan melalui


Mode Operasi Mirroring Database

Berlaku untuk: SQL Server

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

Catatan

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

Syarat 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 bukti, serta 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 mengenali apakah akan memulai failover otomatis. Tidak seperti dua mitra failover, saksi tidak melayani database. Mendukung failover otomatis adalah satu-satunya peran saksi.

Pencerminan Database Asinkron (Mode Performa Tinggi)

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

Catatan

Sebagian besar edisi SQL Server hanya mendukung pencerminan database sinkron ("Safety Full Only"). Untuk informasi tentang edisi yang sepenuhnya mendukung pencerminan database, lihat "Ketersediaan Tinggi (Selalu Aktif)" di Edisi dan fitur yang didukung SQL Server 2022.

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. Pada hilangnya server utama, database cermin ditandai TERPUTUS tetapi tersedia sebagai siaga hangat.

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 sesi

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, kesenjangan dapat menjadi substansial jika server utama berada di bawah beban kerja yang berat atau sistem server cermin selesai dimuat.

Di bagian ini:

Kapan mode berkinerja tinggi 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.

Catatan

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 Saksi pada Mode Berkinerja Tinggi

Jika Anda menggunakan Transact-SQL untuk mengonfigurasi mode berkinerja 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 sesi ketika salah satu mitra turun, database menjadi tidak tersedia. Ini karena, meskipun mode performa tinggi tidak memerlukan bukti, jika satu diatur, sesi memerlukan kuorum yang terdiri dari dua instans server atau lebih. Jika sesi kehilangan kuorum, sesi tidak dapat melayani database.

Ketika saksi diatur dalam sesi mode performa tinggi, penegakan kuorum berarti bahwa:

  • Jika server cermin hilang, server utama harus terhubung ke saksi. Jika tidak, server utama mengambil database offline sampai server saksi atau cermin bergabung kembali dengan sesi.

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

Catatan

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

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 merupakan alternatif terbaik Anda. Setelah menghapus pencerminan, Anda dapat memulihkan log ke database cermin sebelumnya, yang mempertahankan semua data.

    Catatan

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

  • Paksa 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 menyebabkan server cermin mengasumsikan peran utama dan melayani salinan databasenya untuk klien. Ketika layanan dipaksa, log transaksi apa pun yang belum dikirim prinsipal ke server cermin 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).

Pencerminan Database Sinkron (Mode Keselamatan Tinggi)

Bagian ini menjelaskan cara kerja pencerminan database sinkron, termasuk mode keamanan tinggi alternatif (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.

Catatan

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 diperkeras yang belum direbus pada database cermin tetap berada dalam antrean pengulangan.

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 pengakuan dari server cermin sebelum mengonfirmasi salah satu hal berikut ini kepada klien: penerapan transaksi atau pembatalan.

  3. Server cermin mengeraskan log ke disk dan mengembalikan pengakuan 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 diterapkan dijamin ditulis ke disk di server cermin.

Di bagian ini:

Mode Keamanan Tinggi Tanpa Failover Otomatis

Gambar berikut menunjukkan konfigurasi mode keamanan tinggi tanpa failover otomatis. Konfigurasi hanya terdiri dari dua mitra.

Mitra berkomunikasi tanpa saksi

Ketika mitra tersambung dan database sudah disinkronkan, failover manual didukung. Jika instans server cermin tidak berfungsi, instans server utama tidak terpengaruh dan berjalan terekspos (yaitu tanpa mencerminkan data). Jika server utama hilang, cermin ditangguhkan, tetapi layanan dapat dipaksa ke server cermin (dengan kemungkinan kehilangan data). Untuk informasi selengkapnya, lihat Pengalihan Peran Selama Sesi Pencerminan Database (SQL Server).

Mode Keamanan Tinggi 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, bukti, 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 melayani 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 bukti diatur, sesi memerlukan hubungan kuorum-a antara setidaknya dua instans server yang memungkinkan database 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 sementara 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, prinsipal dan saksi berlanjut.

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 dengan tidak adanya saksi database tidak pernah berjalan terekspos, itu tanpa dicerminkan.

Catatan

Jika Anda mengharapkan saksi tetap terputus untuk waktu yang signifikan, kami sarankan Anda menghapus saksi dari sesi hingga tersedia.

Pengaturan Transact-SQL dan Mode Operasi Pencerminan Database

Bagian ini menjelaskan sesi pencerminan database dalam hal pengaturan ALTER DATABASE dan status database dan 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.

Tip

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

Di bagian ini:

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.

Di bagian ini:

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. Jika ada saksi, sesi 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 (Mode Keselamatan Tinggi), 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 (Mode Performa Tinggi), 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 UNKOWN atau TERPUTUS relatif terhadap 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)**
Mode keamanan tinggi tanpa failover otomatis FULL NULL (tidak ada saksi)
Mode keamanan tinggi dengan failover otomatis* FULL TERHUBUNG

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

**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 menjaga properti WITNESS diatur ke NONAKTIF dalam sesi mode berkinerja 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:

Kecil Kolom Deskripsi
Keamanan transaksi mirroring_safety_level atau mirroring_safety_level_desc Pengaturan keamanan transaksi untuk pembaruan pada database cermin, salah satu dari:

UNKNOWN

TIDAK AKTIF

FULL

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:

UNKNOWN

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 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 prinsipal hilang
FULL DISINKRONISASI TERHUBUNG Failover otomatis terjadi.
FULL DISINKRONISASI TERPUTUS Server cermin berhenti; failover tidak dimungkinkan, dan database tidak dapat disediakan.
TIDAK AKTIF DITANGGUHKAN atau TERPUTUS NULL (tidak ada saksi) Layanan dapat dipaksa ke server cermin (dengan kemungkinan kehilangan data).
FULL MENYINKRONKAN atau DITANGGUHKAN NULL (tidak ada saksi) Layanan dapat dipaksa ke server cermin (dengan kemungkinan kehilangan data).

Tugas Terkait

Lihat Juga

Memantau Pencerminan Database (SQL Server)
Bukti Pencerminan Database