Kemungkinan Kegagalan Selama Pencerminan Database

Berlaku untuk:SQL Server

Masalah fisik, sistem operasi, atau SQL Server dapat menyebabkan kegagalan dalam sesi pencerminan database. Pencerminan database tidak secara teratur memeriksa komponen tempat Sqlservr.exe mengandalkan untuk memverifikasi apakah komponen berfungsi dengan benar atau gagal. Namun, untuk beberapa jenis kegagalan, komponen yang terpengaruh melaporkan kesalahan ke Sqlservr.exe. Kesalahan yang dilaporkan oleh komponen lain disebut kesalahan keras. Untuk mendeteksi kegagalan lain yang tidak akan disadari, pencerminan database menerapkan mekanisme waktu habisnya sendiri. Ketika waktu pencerminan habis terjadi, pencerminan database mengasumsikan bahwa kegagalan telah terjadi dan menyatakan kesalahan lunak. Namun, beberapa kegagalan yang terjadi di tingkat instans SQL Server tidak menyebabkan pencerminan kehabisan waktu dan dapat tidak terdeteksi.

Penting

Kegagalan dalam database selain database cermin tidak dapat dideteksi dalam sesi pencerminan database. Selain itu, kegagalan disk data tidak mungkin terdeteksi, kecuali database dimulai ulang karena kegagalan disk data.

Kecepatan deteksi kesalahan dan, oleh karena itu, waktu reaksi sesi pencerminan terhadap kegagalan, tergantung pada apakah kesalahannya keras atau lunak. Beberapa kesalahan keras, seperti kegagalan jaringan segera dilaporkan. Namun, dalam beberapa kasus, periode waktu habis khusus komponen dapat menunda pelaporan beberapa kesalahan keras. Untuk kesalahan lunak, panjang periode waktu habis pencerminan menentukan kecepatan deteksi kesalahan. Secara default, periode ini adalah 10 detik. Ini adalah nilai minimum yang direkomendasikan.

Kegagalan Karena Kesalahan Keras

Kemungkinan penyebab kesalahan keras termasuk (tetapi tidak terbatas pada) kondisi berikut:

  • Koneksi atau kawat yang rusak

  • Kartu jaringan yang buruk

  • Perubahan perute

  • Perubahan pada firewall

  • Konfigurasi ulang titik akhir

  • Kehilangan drive tempat log transaksi berada

  • Sistem operasi atau kegagalan proses

Misalnya, ketika drive log pada database utama menjadi tidak responsif dan gagal, sistem operasi menginformasikan Sqlservr.exe bahwa telah terjadi kesalahan serius.

Beberapa komponen, seperti komponen jaringan dan beberapa subsistem IO, memiliki batas waktunya sendiri untuk menentukan kegagalan. Waktu habis seperti itu independen dari pencerminan database, yang tidak memiliki pengetahuan tentang mereka dan benar-benar tidak menyadari perilaku mereka. Dalam kasus ini, penundaan waktu habis meningkatkan waktu antara kegagalan dan ketika pencerminan database menerima kesalahan keras yang dihasilkan.

Catatan

Satu-satunya pemeriksaan kesalahan aktif yang dilakukan untuk pencerminan database terjadi untuk kasus kesalahan lunak. Untuk informasi selengkapnya, lihat "Kegagalan Karena Kesalahan Lunak," nanti dalam topik ini.

Untuk membantu Anda menginterpretasikan kondisi kesalahan yang terjadi pada jaringan, tanyakan kepada teknisi jaringan pesan kesalahan apa yang dikirim ke port ketika peristiwa berikut terjadi pada koneksi TCP:

  • DNS tidak berfungsi.

  • Kabel dilepas.

  • Microsoft Windows memiliki firewall yang memblokir port tertentu.

  • Aplikasi yang memantau port gagal.

  • Server berbasis Windows diganti namanya.

  • Server berbasis Windows dimulai ulang.

Catatan

Pencerminan tidak melindungi dari masalah khusus untuk klien yang mengakses server. Misalnya, pertimbangkan kasus di mana adaptor jaringan publik menangani koneksi klien ke instans server utama, sementara kartu antarmuka jaringan privat menangani semua lalu lintas pencerminan di antara instans server. Dalam hal ini, kegagalan adaptor jaringan publik akan mencegah klien mengakses database, meskipun database akan terus dicerminkan.

Kegagalan Karena Kesalahan Lunak

Kondisi yang dapat menyebabkan waktu habis pencerminan termasuk (tetapi tidak terbatas pada) hal berikut:

  • Kesalahan jaringan seperti waktu habis tautan TCP, paket yang dihilangkan atau rusak, atau paket yang berada dalam urutan yang salah.

  • Sistem operasi, server, atau database yang tidak merespons.

  • Waktu server Windows habis.

  • Sumber daya komputasi yang tidak memadai, seperti kelebihan beban CPU atau disk, pengisian log transaksi, atau sistem kehabisan memori atau utas. Dalam kasus ini, Anda harus meningkatkan periode waktu habis, mengurangi beban kerja, atau mengubah perangkat keras untuk menangani beban kerja.

Mekanisme Waktu Habis Pencerminan

Karena kesalahan lunak tidak dapat dideteksi langsung oleh instans server, kesalahan lunak berpotensi menyebabkan instans server menunggu tanpa batas waktu. Untuk mencegah hal ini, pencerminan database menerapkan mekanisme waktu habisnya sendiri, berdasarkan setiap instans server dalam sesi pencerminan yang mengirimkan ping pada setiap koneksi terbuka pada interval tetap.

Untuk menjaga koneksi tetap terbuka, instans server harus menerima ping pada koneksi tersebut dalam periode waktu habis yang ditentukan, ditambah waktu yang diperlukan untuk mengirim satu ping lagi. Menerima ping selama periode waktu habis menunjukkan bahwa koneksi masih terbuka dan bahwa instans server berkomunikasi di atasnya. Saat menerima ping, instans server mengatur ulang penghitung waktu habis pada koneksi tersebut.

Jika tidak ada ping yang diterima pada koneksi selama periode waktu habis, instans server menganggap koneksi telah kehabisan waktu. Instans server menutup koneksi kehabisan waktu dan menangani peristiwa waktu habis sesuai dengan status dan mode operasi sesi.

Bahkan jika server lain benar-benar melanjutkan dengan benar, waktu habis dianggap sebagai kegagalan. Jika nilai waktu habis untuk sesi terlalu singkat untuk respons reguler salah satu mitra, kegagalan palsu dapat terjadi. Kegagalan palsu terjadi ketika satu instans server berhasil menghubungi instans server lain yang waktu responsnya sangat lambat sehingga ping-nya tidak diterima sebelum periode waktu habis berakhir.

Dalam sesi mode performa tinggi, periode waktu habis selalu 10 detik. Ini umumnya cukup untuk menghindari kegagalan palsu. Dalam sesi mode keamanan tinggi, periode waktu habis default adalah 10 detik, tetapi Anda dapat mengubah durasi. Untuk menghindari kegagalan palsu, sebaiknya periode waktu habis pencerminan selalu 10 detik atau lebih.

Untuk mengubah nilai waktu habis (hanya mode keamanan tinggi)

  • Gunakan pernyataan bilangan bulat BATAS WAKTU <MITRA SET database ALTER DATABASE<>.>

Untuk melihat nilai batas waktu saat ini

Menanggapi Kesalahan

Terlepas dari jenis kesalahan, instans server yang mendeteksi kesalahan merespons dengan tepat berdasarkan peran instans, mode operasi sesi, dan status koneksi lain dalam sesi. Untuk informasi tentang apa yang terjadi pada hilangnya mitra, lihat Mode Operasi Pencerminan Database.

Lihat Juga

Memperkirakan Gangguan Layanan Selama Pengalihan Peran (Pencerminan Database)
Mode Operasi Mirroring Database
Pengalihan Peran Selama Sesi Pencerminan Database (SQL Server)
Pencerminan Database (SQL Server)