KATA PENGANTAR
Saya panjatkan kehadirat ALLAH SWT yang telah memberikan nikmat sehat dan
kelapangan hati serta kelapangan pikiran sehingga ebook ini dapat saya tulis.
Terimakasih saya ucapkan kepada yang tercinta Istri dan putri ku, yang telah sabar
menemani saya dan memberi semangat untuk terus berkarya. Juga untuk rekan-rekan
team software PDAM Bandarmasih atas masukan dan supportnya. Terimakasih juga atas
izin yang diberikan oleh rekan saya M Reza Faisal MVP yang telah memperbolehkan
menggunakan photo karya beliau sebagai cover buku ini.
EBook ini berisi panduan untuk implementasi Mirroring di SQL Server 2008 dari
mulai persiapan mirroring sampai penggunaan Configure Database Mirroring wizard.
Dalam contoh-contoh di EBook ini menggunakan SQL Server 2008 Developer dan
menggunakan database AdventureWorks.
Saya persembahkan buku ini ebook ini kepada komunitas. Rekan-rekan dapat
dengan bebas untuk menyebarluaskan ebook ini dengan mencantumkan
sumber/alamat aslinya.
Semoga ebook yang singkat ini dapat memberikan manfaat bagi yang akan
menerapkan atau mengenal SQL Server 2008 Mirroring.
[Juni 2010]
Semangat Berbagi,
TENTANG PENULIS
Dilahirkan di kota Bogor pada tahun 1978 dan mulai aktif dengan komuntas
Microsoft User Group Indonesia (MUGI) sejak tahun 2008 di kota Banjarmasin. Sampai
saat ini masih terus aktif baik untuk aktivitas online maupun offline.
I. DATABASE MIRRORING
Fitur Mirroring sudah diperkenalkan di SQL Server semenjak edisi SQL Server
2005. Namun kali ini saya menjelaskan untuk lingkup lingkungan SQL Server 2008. Fitur
ini hanya ada pada SQL Server versi Enterprise dan standard, sedangkan versi yang lain
(workgroup, web, express) dapat dijadikan Witness dalam mekanisme Database
Mirroring ( http://www.microsoft.com/sqlserver/2008/en/us/editions-compare.aspx ).
Benar sekali bayangan anda. SQL Server 2008 memiliki kemampuan untuk
melakukan mirror pada level database, namun tidak pada level instance. Tujuan dari
fitur ini adalah adanya 2 buah database yang sama dan selalu dalam kondisi
tersinkronisasi dimana satu database menjadi principal-nya dan database lainnya
menjadi copy-nya atau cerminannya.
Karena Mirroring ini merupakan fitur pengamanan untuk level database, maka
teknis pengerjaannya bisa dilakukan dalam satu mesin namun berbeda Instance.
Namun direkomendasikan untuk melakukan Mirroring dengan menggunakan beda
mesin. Sehingga apabila terjadi disk failure atau machine failure pada principal database
tidak membahayakan database mirror nya.
1. Automatic Failover
Kemampuan ini membuat implementasi Mirroing dapat dibuat secara automatic
failover, sehingga apabila Database principal mengalami failure, maka mirror nya
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
1. High-Safety Mode
Pada High-Safety Mode, transaksi data yang terjadi harus ter-commit dulu di
database mirror, baru kemudian transaksi ter-commit di database principal
(synchronous). Aplikasi harus menunggu terlebih dahulu transaksi ter-commit
dikedua database sebelum transaksi selanjutnya dapat dijalankan. High-Safety Mode
menawarkan 2 buah opsi untuk mekanisme failovernya yaitu High-Safety without
Automatic Failover dan High-Safety with Automatic Failover. High-safety Mode
dapat diterapkan dengan menggunakan SQL Server versi Standard atau versi
Enterprise. Di dalam penerapannya antara Principal dan Mirror nya harus
menggunakan edisi SQL Server yang sama. Misalkan bila server principalnya
menggunakan SQL Server versi Enterprise maka server Mirrornya pun harus
menggunakan SQL Server Enterprise.
2. High-Performance Mode
Bila anda menggunakan SQL Server Management Studio pada saat sedang
mengerjakan setup Mirroring dengan memanfaatkan wizard yang ada, Transaction
Safety Setting akan berubah secara otomatis menjadi OFF atau FULL tergantung dari
Operating Modes yang dipilih. Namun bila anda mengerjakan setup mirroring dengan
menggunakan T-SQL, Transaction Safety Setting harus dilakukan dengan manual dan
harus mengerti pemberlakuan OFF atau FULL dari settingnya.
4. Antara database Principal dan database Mirror harus menggunakan edisi SQL
Server yang sama, sedangkan database Witness dapat menggunakan Edisi SQL
Server Enterprise, standard, web, workgroup atau Express sekalipun.
Apabila beberapa catatan diatas dianggap telah anda penuhi, kita dapat
melangkah ke kegiatan berikutnya yaitu melakukan mirroring di SQL Server 2008.
Jika anda kesulitan untuk mendapatkan software SQL Server 2008, anda dapat
menggunakan versi trial 180 hari yang dapat didownload disini
http://www.microsoft.com/sqlserver/2008/en/us/trial-software.aspx
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
1. Cek Versi SQL Server untuk mirroring menggunakan versi yang sama di sisi Principal
server dan mirrornya. Mirroring dapat diterapkan bila menggunakan SQL Server
2005 SP1 atau SQL Server 2008. Pada buku ini saya menggunakan SQL Server 2008.
SQL Server 2008 edisi Standard hanya bisa menerapkan High-Safety Operating
Mode (synchronous), sedangkan SQL Server 2008 edisi Enterprise dapat
menerapkan High-Safety Operating Mode (synchronous) atau High-Performance
Operating Mode (Asynchronous).
Cara mencek versi SQL Server dapat menggunakan T-SQL berikut :
SELECT @@VERSION
2. Pastikan database principal tidak menerapkan fitur FILESTREAM didalamnya.
Silahkan kunjungi blog saya untuk mengetahui mengenai filestream
http://mugi.or.id/blogs/suherman/archive/tags/FILESTREAM/default.aspx.
3. Pastikan Database Recovery Model yang digunakan adalah FULL. Untuk merubah
Recovery Model menjadi FULL dapat menggunakan T-SQL Berikut :
alter database adventureworks set recovery full
Pada buku ini saya menggunakan database adventureworks sebagai contoh. Sample
database adventureworks tidak disertai dalam DVD Installer SQL Server, namun
harus didownload terpisah. Lokasi download dapat ditemukan disini :
http://msftdbprodsamples.codeplex.com/releases/view/37109
4. Terapkan Compatibility Level database Adventureworks ke angka 100 (karena
menggunakan SQL Server 2008). Berikut T-SQLnya :
Alter Database AdventureWorks Set Compatibility_Level = 100
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Untuk principal dan mirror saya menggunakan edisi SQL Server 2008 Developer,
sedang untuk witness saya menggunakan edisi SQL Server 2008 Express with
Advanced Services.
6. Selanjutnya lakukan FullBackup pada database Adventureworks yang ada di
Principal Server. Sebelum melakukan backup, buat sebuah folder Backup tempat
meletakkan file hasil backup. Misalkan kita letakkan di C:\Backup. Berikut ini T-
SQLnya :
USE MASTER
GO
BACKUP DATABASE [AdventureWorks] TO DISK =
N'C:\Backup\AdventurewoksForMirroring.bak'
GO
Arahkan Microsoft Sql Server Management Studio anda ke server mirrornya. Pada
demo saya ini, saya arahkan ke server PDI-APLIKASI-1\DB2. Kemudian saya buat
dulu database AdventureWorksnya. Dapat menggunakan T-SQL berikut :
USE master
GO
CREATE DATABASE [AdventureWorks]
ON ( NAME = AdventureWorks_Data, FILENAME = N'C:\Program
Files\Microsoft SQL
Server\MSSQL10.DB2\MSSQL\DATA\AdventureWorks_Data.mdf')
LOG ON ( NAME = AdventureWorks_Log, FILENAME =
N'C:\Program Files\Microsoft SQL
Server\MSSQL10.DB2\MSSQL\DATA\AdventureWorks_Log.ldf')
GO
8. Langkah selanjutnya adalah merestore backup yang telah kita buat ke database
AdventureWorks yang ada di server Mirror. Proses Backup dapat menggunakan T-
SQL berikut :
USE MASTER
GO
RESTORE DATABASE [AdventureWorks] FROM
DISK = N'C:\Backup\AdventurewoksForMirroring.bak'
with NORECOVERY, REPLACE
GO
9. Untuk memastikan bahwa kita telah membackup semua aktivitas database principal
yang terekam di log files. Kita akan melakukan backup log pada database
AdventureWorks di server Principal. Proses backupnya dapat kita lakukan dengan
menggunakan T-SQL berikut :
USE MASTER
GO
BACKUP LOG [AdventureWorks] TO DISK =
N'C:\Backup\AdventurewoksForMirroring_Log.bak'
GO
10. Lalu hasil backup log tersebut kita akan restore ke server Mirror-nya. Restore
backup log dapat kita lakukan dengan menggunakan T-SQL berikut :
USE MASTER
GO
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Lalu akan dimunculkan step pertama dari configuring database mirroring security
wizard yaitu penentuan Witness Server seperti pada gambar dibawah ini
Witness Server akan memantau terus menerus keberadaan dari server principal
dan mirror. Apabila terdeteksi server principal mengalami down operation, maka
automatic failover akan diaktifkan sehingga server mirror akan berubah perannya
menjadi server principal. Selanjutnya klik tombol Next.
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Karena pilihan penggunaan Witness Server adalah Yes, maka step selanjutnya
adalah penentuan Witness Server Instance. Untuk penggunaan Witness Server Instance
dapat menggunakan SQL Server 2008 Express. Wizard dibawah adalah menentukan
bahwa security Configuration nya diletakkan pada Witness Server. Selanjutnya klik
tombol Next.
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Setelah itu wizard pun selesai, ditutup dengan konfirmasi dari konfigurasi yang
sudah ditentukan. Apabila telah setuju dengan konfigurasi yang ditentukan, klik tombol
Finish untuk mengakhiri Configure Database Mirroring Security Wizard.
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Kemudian mirroring pun dapat dimulai dengan munculnya dialog box database
properties. Klik tombol Start Mirroring untuk menjalankan proses Mirroring.
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Sampai disini proses pembuatan mirroring di SQL Server 2008 telah berhasil
dilakukan, bisa diperhatikan pada status mirroring yang menginformasikan bahwa
Synchronized: the database are fully synchronized.
Dengan adanya Log Stream Compression maka log yang dikirimkan oleh principal
ke mirror akan dikompresi terlebih dahulu, tentunya ini akan mengoptimalkan bandwith
yang terpakai.
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Bila proses mirroring telah kita terapkan, maka pada server principal database
AdeventureWork yang kita gunakan penerapan mirroring akan tampak Mirroring States
Synchronized seperti gambar dibawah ini
Dan pada Server mirroring, akan tampak seperti gambar dibawah ini.
Lalu bagaimana dengan aplikasi yang terhubung dengan SQL Server yang
menggunakan Mirroring ? apa yang terjadi bila automatic failover di terapkan ?
Dengan menggunakan Connectionstring diatas, maka pada saat aplikasi tidak dapat
menemukan Database Server Principal, maka aplikasi akan mencari ke Server Failover
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
partnernya. Sehingga tidak perlu lagi melakukan coding ulang untuk merubah
connectionstring.
INTRODUCING SQL SERVER 2008 FEATURE : MIRRORING
Aktivitas database mirroring dapat kita monitor melalui tools yang sudah ada di
SSMS (SQL Server Management Studio). Caranya adalah :
1. Klik kanan pada database Adventureworks yang kita jadikan sebagai principal.
Pilih tasks, kemudian pilih menu Lounch Database Mirroring Monitor
seperti gambar berikut
Pada grid Status, terlihat status dari principal dan mirror serta witness servernya.
Disini juga dapat dilihat Mirorring state yang ada. Ada 4 Mirroring state yang
perlu diketahui :
a. Synchronized, ini menandakan bahwa server principal dan mirror dalam
kondisi sama dan akan tetap demikian selama mirror terus menerapkan
segala perubahan yang terjadi di principal
b. Synchronizing, ini menandakan bahwa server mirror sedang berusaha
melakukan kesamaan perubahan yang terjadi di principal.
c. Suspended, ini menandakan bahwa server principal dalam kondisi normal
namun tidak melakukan pengiriman log ke server mirror.
d. Disconnected, kedua server (principal dan mirror) tidak dapat berkomunikasi.