Mirroring Database merupakan perangkat lunak utama sebagai solusi peningkatan ketersediaan database. Mirroring di implementasikan pada basis perdatabase dan hanya bekerja pada database yang menggunakan model recovery penuh atau full. Model recovery simple dan bulk-logged tidak didukung dalam mirroring database. Database mirroring bekerja dengan tingkat kompatibilitas database yang didukung. Sebagai catatan, kita tidak bisa melakukan mirror untuk database master, msdb, tempdb atau model.
Database Mirroring mempertahankan dua salinan dari sebuah database tunggal yang harus berada pada Instance SQL Server Engine yang berbeda lokasinya. Biasanya salah satu server berada di lokasi yang berbeda, Misalnya satu server database berperan sebagai server utama yang melayani klien. Server yang lain berperan sebagai server cadangan atau standby server tergantung pada konfigurasi dan status sesi mirroring. Ketika sesi mirroring database di sinkronkan, mirroring database menyediakan server siaga yang mendukung failover yang dengan cepat tanpa kehilangan data dari transaksi yang dilakukan. Ketika sesi tidak disinkronkan, server mirror biasanya tersedia sebagai warm standby server (dengan kemungkinan kehilangan data).
Manfaat Database Mirroring
Mirroring database adalah strategi sederhana yang menawarkan keuntungan sebagai berikut:
- Meningkatkan perlindungan data. Mirroring database menyediakan redundansi lengkap atau hampir lengkap dari data, tergantung pada apakah modus operasi high-safety atau high-performance. Untuk informasi lebih lanjut silahkan baca sub "Mode Operasi" dalam catatan ini.
- Meningkatkan ketersediaan database. Dalam hal terjadi bencana, dalam mode high-safety dengan failover otomatis, failover dengan cepat membawa salinan standby database dari database online (tanpa kehilangan data). Dalam modus operasi lain, database administrator memiliki alternatif layanan untuk memaksa service (dengan kemungkinan kehilangan data) ke database salinan yang sedang standby. Lebih detail silahkan baca "Peralihan Peran" di bawah.
- Meningkatkan ketersediaan dari database produksi selama upgrade. Untuk meminimalkan downtime untuk database yang di mirror, kita dapat meng-upgrade SQL Server yang menjadi bagian dari sesi mirroring database secara berurutan, hal ini akan menjadikan hanya failover tunggal saja yang mengalami downtime. Model upgrade seperti ini dikenal sebagai upgrade bergulir. Untuk informasi lebih lanjut silahkan baca How to: Install a Service Pack on a System with Minimal Downtime for Mirrored Databases.
Partner database mirroring berjalan pada SQL Server 2008 Enterprise Edition atau versi yang lebih tinggi secara otomatis mencoba untuk menyelesaikan beberapa jenis kesalahan yang mencegah membaca halaman data. Partner yang tidak dapat membaca halaman permintaan salinan dari mitra lainnya. Jika permintaan itu berhasil, halaman yang terbaca digantikan oleh salinan, yang biasanya selesai dari mengatasi keasalahan yang terjadi. Untuk informasi lebih lanjut silahkan lihat di Automatic Page Repair During a Database Mirroring Session.
Bagaimana Database Mirroring Bekerja.
Server utama dan server mirror berkomunikasi dan bekerjasama sebagai partner dalam sebuah sesi mirroring database. Dua partner melakukan peran pelengkap dalam sesi : peran utama dan peran mirror. Pada waktu tertentu, satu pasangan melakukan peran utama dan partner lainnya melakukan peran mirror. Setiap pasangan digambarkan memiliki peran saat ini. Partner yang memiliki peran utama biasa dikenal dengan istilah Server Utama, dan Database-nya disebut sebagai Database utama. Partner yang berperan sebagai mirror disebut server mirror dan database-nya disebut database mirror. Ketika database mirror dibuat dalam lingkungan produksi, maka database utama disebut juga disebut database produksi.
Database mirror melakukan ulang setiap operasi Insert, Update dan Delete yang terjadi pada database utama ke database mirror secepat mungkin. Melakukan ulang dilakukan dengan mengirim aliran log transaksi aktif ke server mirror, dan menerapkan catatan log tersebut ke database mirror secara berurutan secepat mungkin. Tidak seperti replikasi yang terjadi di tingkat logis, mirroring database bekerja di tingkat catatan log fisik. Mulai SQL Server 2008, Server Utama mengkompres aliran log transaksi sebelum mengirimnya ke server mirror. Kompresi log terjadi dalam semua sesi mirror.
Mode Operasi.
Sebuah sesi mirroring database berjalan dengan operasi baik sinkron atau asinkron. Dalam operasi asinkron, transaksi komit tanpa menunggu server mirror menulis log ke disk, hal ini akan memaksimalkan kinerja. Dalam operasi sinkron, transaksi dilakukan atas kedua pasangan, tapi resikonya latency transaksi meningkat.
Ada dua mode operasi mirroring. Salah satunya, modus high-safety yang mendukung operasi sinkron. Dalam modus high-safety, ketika sesi dimulai, server mirror akan mensinkronisasikan database mirror bersama-sama dengan database utama secepat mungkin. Begitu database disinkronkan, maka transaksi akan di komit pada kedua server, sehingga latency transaksi meningkat.
Modus operasi kedua, modus High-Performance, berjalan asinkron. Server mirror mencoba untuk mengambil catatan log yang dikirim oleh server utama. Database mirror mungkin agak tertinggal dari database utama. Namun, biasanya, kesenjangan antar database kecil. Namun, kesenjangan dapat menjadi signifikan jika server utama memiliki beban kerja berat atau sistem dari server mirror kelebihan beban.
Dalam modus kinerja tinggi, begitu server utama mengirimkan catatan log ke server mirror, server utama mengirimkan konfirmasi ke klien. Server utama tidak menunggu konfirmasi kiriman catatan log yang dikirim ke server mirror apakah sudah di rekam ke disk atau belum oleh server mirror. Ini berarti transaksi komit tanpa menunggu apakah server mirror menulis log ke disk atau belum. Operasi asinkron seperti ini memungkinkan server utama untuk menjalankan transaksi dengan latency minimal, namun dengan risiko potensial kehilangan beberapa data karena tidak memastikan catatan log direkam pada server mirror.
Semua Sesi mirroring database hanya didukung oleh satu server utama dan satu server mirror. Konfigurasi ini ditunjukkan pada ilustrasi berikut.
Mode High-Safety dengan failover otomatis membutuhkan Instance server ketiga yang dikenal dengan istilah witness. Berbeda dengan dua peran sebelumnya, witness tidak melayani database. Witness mendukung failover otomatis dengan memverifikasi apakah server utama berfungsi dengan baik. Server mirror memulai failover otomatis hanya jika server mirror dan witness tetap terhubung satu sama lain setelah keduanya terputus dari server utama.
Ilustrasi berikut menunjukkan konfigurasi yang melibatkan witness.
Catatan :
Membuat sesi mirror baru mengharuskan penggunaan instance SQL Server dengan versi yang sama. Namun jika kita meng-upgrade ke SQL Server 2008 kita bisa menggunakan versi yang bervariasi. Untuk informasi lebih lanjut silahkan lihat artikel panduan dari Microsoft ini.
KeamananTransaksi dan Mode Operasi
Baik mode operasi sinkron ataupun asinkron tergantung pada setting pengaturan keamaan transaksi. Jika kita secara eksklusif menggunakan SQL Server Managment Studio untuk mengkonfigurasi database mirror, pengaturan keamanan transaksi dikonfigurasi secara otomatis bila kita memilih mode operasi.
Jika kita menggunakan Transact-SQL untuk mengkonfigurasi database, kita harus memahami bagaimana mengatur keamanan transaksi. Keamanan transaksi dikendalikan oleh property SAFETY dari Pernyataan ALTER DATABASE. Pada database yang di mirror, SAFETY bernilai FULL atau OFF.
- Jika opsi SAFETY diset ke FULL, database mirror beroperasi secara sinkron, setelah tahap sinkronisasi awal. Jika Witness diset ke mode high-safety, sesi mendukung failover otomatis.
- Jika opsi SAFETY diatur ke OFF, database mirror beropeasi secara asinkron. Sesi berjalan dalam modus kinerja tinggi (high-performance) dan opsi Witness juga harus OFF.
Untuk informasi lebih lanjut lihat Transact-SQL Settings and Database Mirroring Operating Modes.
Peralihan Peran
Dalam kontek sesi mirroring database, peran utama dan mirror biasanya dipertukarkan dalam proses yang dikenal sebagai Role Switching atau pertukaran peran. Pertukaran peran meliputi mentransfer peran utama ke server mirror. Dalam beralhih peran, server mirror bertindak sebagai mitra failover untuk server utama. Ketika pergantian peran terjadi, server mirror mengambil alih peran utama dan menjadikan salinan database padanya pada posisi online sebagai database utama. Bekas server utama, jika masih tersedia, mengasumsikan peran sebagai mirror, dan database yang ada padanya menjadi database mirror baru. Dengan demikian, peran dapat beralih kembali dan begitu seterusnya.
Berikut 3 bentuk peralihan peran yang ada.
- Automatic Failover Hal ini membutuhkan mode High-Safety dan adanya server mirror dan Witness. Database sudah harus disinkronkan dan witness harus terhubung ke server mirror.
- Manual Failover Hal ini membutuhkan mode high-safety. Para mitra harus terhubung satu sama lain dan database sudah harus disinkronkan.
- Layanan yang dipaksakan Dalam modus high-performance dan high-safety tanpa failover otomatis, memaksa layanan memungkinkan jika server utama telah gagal dan server mirror tersedia.
Peran witness adalah untuk memverifikasi apakah peran server yang diberikan berfungsi dengan baik. Jika server mirror kehilangan koneksi atau sambungan ke server utama, tetapi witness masih terhubung ke server utama, server mirror tidak melakukan failover. Untuk informasi lebih lanjut lihat Database Mirroring Witness
Penting :
Mode High-Performance dimaksudkan untuk berjalan tanpa Witness. Tetapi Jika Witness tersedia, memaksa layanan mensyaratkan witness terhubung ke server mirror
Dalam skenario peralihan peran, secepat mungkin database utama menjadi online, aplikasi klien dapat me-recover secara cepat dengan menghubunglam kembali ke database.
Interoperabilitas dan Koeksistensi dengan Fitur Database Engine Lain
Mirroring database dapat digunakan dengan fitur berikut atau komponen dari SQL Server.
- Log Shipping
- Full-text catalogs
- Database Snapshots
- Replication
Dukungan Database Mirroring
Sejak SQL Server 2005 Service Pack 1 (SP1), partner mirroring database dan witness telah didukung oleh Edisi Standar dan Edisi Enterprise. Tapi partner harus menggunakan edisi yang sama, dan mirroring database asinkron (mode high performace) hanya didukung oleh Enterprise Edition. Witness juga didukung oleh Workgroup Edition dan Express Edition.