Mirroring dengan SQL Server 2008 - Bagian 1
Ada banyak metode-metode yang bisa kita implementasikan pada SQL Server dalam memenuhi kebutuhan bisnis yng berkenaan dengan High Availability dari mesin database SQL Server kita, salah satunya adalah feature Database Mirroring.
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).
Database mirroring diimplemetasikan per database pada SQL Server dan bekerja hanya pada database yang mempunyai full recovery mode sebagai recovery modelnya. Ini bisa kita lihat dengan cara klik kanan pada database -> Properties - Options

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. Gambaran dari mirroring ini bisa dilihat pada gambar dibawah.

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. Gambarannya bisa dilihat dalam gambar dibawah

Dalam konfigurasi tersebut diatas 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