Oct 262011
 

Share lagi…. n masih berkutat pada Basis data terdistribusi dengan bahasa yang acak-acakan… :p

kali ini tentang database mirroring. ¬†ok, moga manfaat. ūüėÄ

================================================

Database mirroring adalah proses “penduplikatan” database ke tempat lain, dimana bertujuan untuk mencegah terjadinya hal-hal yang tidak diinginkan pada database kita, misalnya mesin database crash, dan lain sebagainya. Kita bisa saja mempergunakan backup dari database kita apabila terjadi sesuatu dengan database kita, tetapi tentunya untuk proses recovery akan butuh waktu dan juga data yang ada tidak akan bisa pada state terakhir.

Database mirroring ini juga mendukung fasilitas untuk failover, dimana apabila terjadi sesuatu dengan database primary (principal server) kita masih punya cadangan di database sekunder (mirror server). Principal dan mirror server berkomunikasi sebagai partner dalam mirroring ini, dan masing-masing mempunyai role sebagai principal role dan mirror role, tetapi bisa saja pada suatu saat role ini berpindah, yang tadinya mempunyai role sebagai principal bisa saja menjadi mirror dan sebaliknya.

Mirroring bisa berjalan dengan cara synchronous ataupun asynchronous, kedua cara ini masing-masing ada keuntungan dan kerugiannya. Model synchronous akan lebih bagus dari sisi konsistensi data, karena ketika terjadi transaksi, akan disimpan kedalam 2 partner, tetapi ini akan menyebabkan peningkatan dalam hal cost latency untuk transaksi. Sedangkan model asynchronous transaksi akan commit tanpa menunggu server mirror selesai melakukan penulisan data ke database mirror.

Untuk modelnya operasinya sendiri mirroring di bedakan menjadi 2 jenis, yaitu high-safety mode dan high-performance mode. High-safety mode jalan dalam model synchronous sedangkan high-performance mode jalan dalam model asynchronous. 

Dalam mirroring kita bisa juga membuat suatu konfigurasi dengan membuat automatic failover, tetapi konfigurasi ini membutuhkan satu server instance lagi yang disebut dengan witness server. 

Witness server akan selalu memonitor kedua server tersebut, principal server dan mirror server, apabila terjadi sesuatu pada principal server, maka otomatis principal server ini akan di pindahkan ke mirror server, dan mirror server akan berubah rolenya menjadi principal

Mirroring database mempertahankan dua salinan dari sebuah database tunggal yang harus berada pada kasus server yang berbeda dari SQL Server Database Engine. Biasanya, kasus server berada pada komputer di lokasi yang berbeda. Satu contoh server database berfungsi untuk klien (server utama). Contoh lain bertindak sebagai server mirror, tergantung pada konfigurasi dan keadaan dari sesi mirroring. Ketika sesi mirroring database disinkronkan, mirroring database menyediakan server siaga yang mendukung failover yang cepat tanpa kehilangan data dari transaksi yang dilakukan. Ketika sesi tidak disinkronkan, server mirror biasanya tersedia sebagai server siaga.

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 tinggi-keamanan atau performa tinggi.

  • Meningkatkan ketersediaan database.

Dalam hal terjadi bencana, dalam mode tinggi-keamanan dengan failover otomatis, failover cepat membawa salinan siaga dari database online (tanpa kehilangan data).Dalam modus operasi lain, database administrator memiliki alternatif layanan memaksa (dengan kehilangan data mungkin) untuk salinan database siaga.

  • Meningkatkan ketersediaan database produksi selama upgrade.

Untuk meminimalkan downtime untuk database mirror.

Bagaimana Database Mirroring Bekerja

Server utama dan mirror berkomunikasi dan bekerja sama sebagai mitra dalam sesi mirroring database. Dua database melakukan peran pelengkap dalam sesi: peran utama dan peran mirror. Pada waktu tertentu, satu database melakukan peran utama, dan yang lainnya melakukan peran mirror.

Mirroring database melibatkan mengulangi setiap insert, update, dan menghapus operasi yang terjadi pada database utama ke database mirror secepat mungkin. Pengulangan dilakukan dengan mengirimkan aliran catatan log transaksi aktif ke server mirror, yang berlaku catatan log ke database mirror, dalam urutan secepat mungkin. Tidak seperti replikasi, yang bekerja di tingkat logis, mirroring database bekerja di tingkat catatan log fisik.

Memilih mode database mirroring

Tiga mode operasional yang disediakan untuk mirroring:

  • synchronous
  • asynchronous
  • asyncfullpage

Modus sinkron adalah default. Mode ini mengontrol kapan dan bagaimana transaksi dicatat pada server mirror, dan Anda mengatur mereka dengan pilihan server-xp.

Bila memilih modus sinkronisasi untuk sistem mirroring database Anda, Anda harus menentukan apakah pemulihan kecepatan atau keadaan data yang lebih penting ketika terjadi failover.

Anda dapat memeriksa modus mirroring database dengan query nilai dari properti database MirrorMode:

  • Synchronous mode

Pada mode sinkron, transaksi berkomitmen dijamin akan direkam pada server mirror. Jika kegagalan terjadi pada server utama, tidak ada transaksi berkomitmen hilang ketika server mirror mengambil alih. Dalam mode ini, server utama mengirimkan halaman transaksi log untuk mirror ketika transaksi berkomitmen. Server mirror transmisi mengakui bahwa ketika telah menulis halaman-halaman untuk menyalin nya dari log transaksi. Server utama tidak membalas aplikasi sampai menerima pengakuan ini.

Menggunakan mode sinkron menyediakan keamanan transaksi karena server operasional dalam keadaan disinkronisasi, dan perubahan dikirim ke mirror harus diakui sebelum utama dapat dilanjutkan.

  • Asynchronous mode

Dalam modus asynchronous, transaksi yang dilakukan tidak dijamin akan direkam pada server mirror. Dalam mode ini, server utama mengirimkan halaman transaksi log untuk mirror ketika transaksi di commit. Ia tidak menunggu pengakuan dari mirror sebelum menjawab ke aplikasi yang COMMIT telah selesai. Jika kegagalan terjadi pada server utama, ada kemungkinan bahwa beberapa transaksi yang dilakukan mungkin akan hilang ketika server mirror mengambil alih.

  • Asyncfullpage mode

Dalam Asyncfullpage mode, halaman tidak dikirim pada COMMIT, melainkan, mereka dikirim saat halaman penuh. Hal ini akan mengurangi jumlah lalu lintas antara dua server database dan meningkatkan kinerja dari server primer. Jika halaman log saat ini belum dikirim ke mirror untuk jumlah detik yang ditentukan oleh parameter pagetimeout, itu dikirim meskipun belum penuh. Para pagetimeout default adalah 5 detik. Menggunakan mode ini memberikan batas pada berapa lama transaksi berkomitmen terkena hilang jika server primer turun dan server mirror mengambil kepemilikan dari database. Asyncfullpage mode menyiratkan operasi asynchronous, sehingga server primer tidak menunggu pengakuan dari mirror.

Asynchronous dan Asyncfullpage mode lebih cepat daripada mode sinkron, tetapi kurang dapat diandalkan karena alasan di atas. Dalam modus asynchronous atau asyncfullpage, failover dari server utama ke server mirror tidak otomatis karena server mirror mungkin tidak memiliki semua transaksi dilakukan yang diterapkan pada server primer. Untuk alasan ini, ketika menggunakan salah satu mode asynchronous, server mirror, secara default, tidak dapat mengambil kepemilikan dari database ketika utama gagal. Jika failover otomatis diinginkan dalam situasi ini (meskipun kemungkinan transaksi hilang), mengatur pilihan autofailover untuk ya menggunakan pilihan server-xp.Jika tidak, ketika server gagal adalah restart, mendeteksi apakah transaksi hilang. Jika transaksi yang hilang, menulis pesan ke log server database pesan dan menutup database. Database saat ini dan log transaksi kemudian harus diganti menggunakan cadangan sebelum mirroring dapat melanjutkan.

======================================================

Referensi :

http://msdn.microsoft.com/en-us/library/ms189852.aspx

http://www.extremeexperts.com/sql/articles/DBMirroring1.aspx

http://netindonesia.net/blogs/dkusdeni/archive/2010/02/17/mirroring-dengan-sql-server-2008-bagian-1.aspx

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)