Kemungkinan Kegagalan Selama Pencerminan Database

Berlaku untuk:SQL Server

Masalah fisik, sistem operasi, atau SQL Server dapat menyebabkan kegagalan dalam sesi pencerminan database. Pencerminan basis data tidak secara berkala memeriksa komponen yang diandalkan oleh Sqlservr.exe untuk memastikan apakah komponen tersebut berfungsi dengan benar atau mengalami kegagalan. 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 mungkin tidak terdeteksi, pencerminan database menerapkan mekanisme time-out-nya sendiri. Ketika batas waktu pencerminan terlampaui, pencerminan basis data mengasumsikan telah terjadi kegagalan dan menetapkan kesalahan lunak. Namun, beberapa kegagalan yang terjadi pada tingkat instans SQL Server tidak menyebabkan pencerminan mengalami time-out dan dapat luput dari deteksi.

Penting

Kegagalan pada basis data selain basis data yang dicerminkan tidak dapat dideteksi dalam sesi pencerminan basis data. Selain itu, kegagalan disk data kemungkinan besar tidak akan terdeteksi, kecuali jika basis data 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 batas waktu khusus untuk komponen tertentu dapat menunda pelaporan beberapa error berat. 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 router

  • 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. Batas waktu seperti itu tidak bergantung pada pencerminan database, yang tidak mengetahui hal tersebut dan sama sekali tidak menyadari cara kerjanya. Dalam kasus ini, penundaan batas waktu menambah waktu antara terjadinya kegagalan dan saat pencerminan database menerima kesalahan fatal yang dihasilkan.

Catatan

Satu-satunya pemeriksaan galat aktif yang dilakukan untuk pencerminan basis data hanyalah pada kasus galat 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 basis data, meskipun basis data akan terus dicerminkan.

Kegagalan Akibat Soft Error

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 tidak mencukupi, seperti beban CPU atau disk yang berlebihan, log transaksi yang menjadi penuh, atau sistem yang 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 Batas Waktu 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 batas waktu sendiri, yang didasarkan pada setiap instans server dalam sesi pencerminan yang mengirim ping melalui 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. Diterimanya ping selama periode time-out menunjukkan bahwa koneksi masih terbuka dan instans server berkomunikasi melalui koneksi tersebut. 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 sebenarnya sedang berjalan dengan benar, batas waktu terlampaui tetap dianggap sebagai kegagalan. Jika nilai batas waktu untuk suatu sesi terlalu singkat dibandingkan dengan waktu respons normal salah satu pihak, kegagalan semu 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 dengan mode kinerja tinggi, batas waktu 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)

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 jika mitra hilang, lihat Mode Operasi Pencerminan Database.