Database Mirroring Pada SQL Server 2008

Mirror. Salah satu kata yang mungkin sudah biasa terdengar untuk kalangan profesional di bidang SQL Server. Ya, Database Mirroring lebih tepatnya.

Database Mirroring adalah proses duplikasi database ke lokasi lain (server lain) dengan tujuan agar database tersebut terhindar dari hal yang dapat mengganggu kestabilan database tersebut. Misalnya crash, data tidak bisa di akses, ataupun data tersebut mengalami corrupt.

Dengan adanya fitur Mirror dari SQL Server ini, kita bisa mengantisipasi terjadinya hal-hal tersebut di atas. Karena dengan menjalankan Database Mirroring, kita bisa menjalankan proses Failover (baik secara otomatis maupun manual).

Failover adalah proses mengambil alih fungsi dari server yang mati (principal) ke server backup (mirror), sehingga komputer client tidak mengetahui jika terjadi kegagalan pada server, karena proses yang dilakukan pada server yang gagal atau mati akan dilanjutkan oleh server backup.

Pada dasarnya, jika kita ingin menjalankan Failover secara manual, kita hanya butuh 2 server saja yaitu server yang di sebut Principal dan Mirror.

Database Mirroring

Namun jika menginginkan Failover secara otomatis, dibutuhkan satu server lagi yang biasa disebut Witness yang berfungsi sebagai monitor terhadap Principal dan Mirror.

Database Mirroring

Pada pembahasan kali ini, kita akan membahas Database Mirroring dengan metode Failover secara manual. Berarti kita hanya menggunakan dua server saja (Principal dan Mirror). Berikut ini langkah-langkah proses Database Mirroring.

1. Langkah yang pertama adalah kita harus set recovery database tersebut secara full (dari server principal) dengan script dibawah ini :

Use master;
GO
ALTER DATABASE NamaDatabase
SET Recovery FULL;
GO

Contoh :

USE master;
GO
ALTER DATABASE Ax_2009_Live
SET RECOVERY FULL;
GO

Database Mirroring

2. Kemudian melakukan backup database yang akan di mirror. Ada baiknya, proses backup ini di lakukan pada saat database tersebut sedang offline atau tidak di akses oleh server production. Berikut adalah script untuk menjalankan backup database. Dalam hal ini, kita backup database ke folder sharing.

BACKUP DATABASE NamaDatabase
TO DISK = β€˜Lokasi directory database\NamaDatabase.bak’
WITH FORMAT
GO

Contoh :

BACKUP DATABASE Ax_2009_Live
TO DISK = β€˜\\10.1.1.28\BACKUP_DB\DATA\Ax_2009_Live.bak’
WITH FORMAT
GO

Database Mirroring

3. Selanjutnya database log perlu kita backup juga, dengan script di bawah ini :

BACKUP LOG NamaDatabase
TO DISK = ‘Lokasi directory database\NamaDatabase.bak’
GO

Contoh :

BACKUP LOG Ax_2009_Live
TO DISK = \\10.1.1.28\BACKUP_DB\LOG\Ax_2009_Live.bak’
GO

Database Mirroring

4. Jika proses backup database dan log sudah selesai, selanjutnya restore database dan log tersebut ke server yang di jadikan sebagai Mirror. Berikut script untuk restore database :

RESTORE DATABASE NamaDatabase
FROM DISK = ‘Lokasi directory database\NamaDatabase.bak’
WITH NORECOVERY,
MOVE ‘NamaDatabase’ TO
‘Lokasi directory database\NamaDatabase_Data.mdf’,
MOVE ‘NamaDatabase_Log’ TO
‘Lokasi directory database\NamaDatabase_Log.ldf’;
GO

Contoh :

RESTORE DATABASE Ax_2009_Live
FROM DISK = ‘G:\MSSQL\SQL\BACKUP\DATA\Ax_2009_Live.bak’
WITH NORECOVERY,
MOVE ‘Ax_2009_Live’ TO
‘G:\MSSQL\SQL\DATA\Ax_2009_Live_Data.mdf’,
MOVE ‘Ax_2009_Live_Log’ TO
‘G:\MSSQL\SQL\LOG\Ax_2009_Live_Log.ldf’;
GO

Database Mirroring

Perlu diketahui, untuk proses mirror, database yang di restore memang berstatus “Restoring…” dan tidak bisa dipakai karena berfungsi untuk mirror database dari principal.

5. Selanjutnya restore sekali lagi database log dengan script dibawah ini

RESTORE LOG NamaDatabase
FROM DISK = ‘Lokasi directory database\NamaDatabase.bak’
WITH FILE=1, NORECOVERY
GO

Contoh :

RESTORE LOG Ax_2009_Live
FROM DISK = ‘G:\MSSQL\SQL\BACKUP\LOG\Ax_2009_Live.bak’
WITH FILE=1, NORECOVERY
GO

SDatabase Mirroring

6. Selanjutnya kita akan menjalankan langkah-langkah Database Mirroring. Pada server Principal klik kanan database yang akan di mirror -> Pilih Task -> Mirror.

Database Mirroring

7. Dari langkah tersebut diatas, maka akan tampil menu mirroring.

Database Mirroring

8. Dari menu mirror ini, pilih “Configure Security”.

Database Mirroring

9. Karena kita menjalankan failover secara manual, maka kita tidak perlu memakai server Witness. Pada tampilan ini, pilih No.

Database Mirroring

10. Tentukan server yang akan dijadikan sebagai server Principal

Database Mirroring

11. Selanjutnya pilih server yang akan dijadikan sebagai server Mirror.

Database Mirroring

12. Hal penting yang perlu diperhatikan adalah service account pada tiap masing-masing server, tentunya kita harus menggunakan service account yang memang digunakan untuk SQL Server.

Database Mirroring

13. Proses Configure Security untuk mirror selesai.

Database Mirroring

14. Selanjutnya akan tampil dialog box yang akan menanyakan proses eksekusi Database Mirroring, Pilih Start Mirroring.

Database Mirroring

15. Jika statusnya “Synchronized: the database are fully synchronized”, maka database dari server Principal ke server Mirror sudah Synchronize.

SDatabase Mirroring

16. Untuk memastikan lagi database tersebut sudah synchronize, kita bisa menggunakan Mirror Monitoring seperti gambar berikut.

Database Mirroring

Database Mirroring

17. Selanjutnya kita akan melakukan Failover, dimana dilakukan perpindahan database dari server principal ke server mirror. Sehingga kedua server tersebut akan berubah dari Principal ke Mirror begitu juga sebaliknya. Untuk melakukan Failover manual, masuk ke menu mirror dan pilih tombol Failover. Maka akan tampil dialog box peringatan mengenai perpindahan setelah proses Failover.

Database Mirroring

18. Jika proses Failover berjalan sukses, maka database akan berpindah ke server yang sebelumnya sebagai Mirror.

Database Mirroring

19. Untuk memastikan lagi, jalankan Mirror Monitoring.

Database Mirroring

Proses Database Mirroring dan Failover selesai. Semoga bermanfaat πŸ™‚

Advertisements

42 thoughts on “Database Mirroring Pada SQL Server 2008

  1. Pingback: SQL Clustering Pada Windows Server 2008 R2 (Part. 1) | Infrastructure Solutions

  2. Pingback: Log Shipping Pada SQL Server 2008 | Infrastructure Solutions

  3. Mas, kalo mirroring kan itu semua yang ada di dalam database ke copy semua, kalo saya mau pilih beberapa field saja dari beberapa tabel pada server A ke server B, itu ane pake metode apa yah? kalo trigger mungkin gak mas? dan untuk koneksi antar server itu gimana yah mas?

    terima kasih

  4. salam kenal mas, sy ingin pake metode whitness, pertanyaan saya..setiap bulankan kami selalu proses data(membuat data tagihan baru), dimana dalam proses data tsbt kami pasti akan melakukan “stop mssqlserver” dan akan kami run kembali “start mssqlserver” bila kami sudah melakukan proses data , dalam mirroring ini apakah ada cara khusus agar tidak berdampak error, dan kami melakukan proses data di mana? di principal atau di mirror atau di whitness lalu database pada server yg mana bisa kami backup full(copas)?
    terimakasih.

    • salam kenal jg mas firman. Metode yg mas firman pakai (witness) justru lebih memudahkan dalam proses mirorring. Krn perpindahan dari server principal ke mirror bisa berjalan otomatis. Lain lagi jika tidak menggunakan witness, maka proses perpindahan data dari server principal ke server mirror harus di lakukan secar manual. Metode dengan atau tidak menggunakan witness, tergantung dari kebutuhan. Proses data tentunya akan di jalankan di principal, krn disitulah service sql berjalan. Krn sebenarnya, mirorring itu metode active passive. Apabila server principal down, maka server mirroring secara otomatis akan berubah menjadi server principal dan sebaliknya, (tentunya perpindahan ini membutuhkan waktu beberapa detik atau bahkan menit, tergantung dari jumlah datanya). Sesuai dengan pengalaman saya, SQL mirorring tidak pernah menemui kendala (error) selama storage dimasing-masing server (principal dan mirorr) masih cukup. Semoga membantu πŸ™‚

      • excelent..thanks ya bro….tp ntr kalo saya bertanya lgi jangan bosan ya, hidup itu untuk berbagi lo…

    • ada baiknya join domain mas, biar lebih mudah manage nya.
      Untuk settingan lain, mungkin dibedakan saja services account di server mirror dengan principal.
      Misal : namadomain\sqlprincipal dan namadomain\sqlmirror.
      Pengalaman saya, sepertinya tidak disarankan menggunakan service account yg sama di kedua server tersebut, jadi harus di bedakan.

      • mas.. mau nanya.. saya kok tetap berhasil melakukan mirroring yak.. padahal saya sudah melakukan login domain. BTW yang yang dimaksudkan namadomain\sqlprincipal –> sql principal itu maksud nya apa yak?? usernya principal atau hanya alamat IP nya ?? terima kasih

      • itu dibuat account baru mas dari server Active Directory. Misal nama domainnya ABC brarti dari server AD dibuatkan login khusus utk pricinpal menjadi ABC\sqlprincipal.srv (utk penamaan bebas). semoga membantu πŸ™‚

      • iya terimakasih mas,
        tapi dari sql server versi 2008 kenapa ketika mau masuk Management Studio nya gak bisa di Password seperti yg versi 2000 ya mas ?
        Walaupun waktu installasi nya sudah saya pilih Mixed Mode dengan input password, tapi ketika masuk Management Studio pilih Windows Authentication tetep bisa masuk, kalo di enterprise manager sql server 2000 gak bisa mas.
        Mohon Solusi nya mas, terimakasih

      • Setau saya di SQL 2008 tetap bisa menggunakan 2 tipe login, login sql dan login windows. Coba klik kanan pada instance di SSMS -> Properties -> Security -> Server Authentication. Pilih SQL Server and Windows Login Authentication. Jika blm efek, coba di restart services SQL nya. Semoga bermanfaat.

    • Coba dicek services sql nya mas, baik yg mirror ataupun yg principal apakah statusnya stopping? Kemudian cek space utk penyimpanan database (data dan log) di server mirror, apakah masih mencukupi? Berdasarkan pengalaman yg pernah saya dapatkan proses mirroring akan berhenti ketika space di server mirror sudah tidak cukup utk menampung data yg di synchronize ke server mirror tersebut. Semoga bisa membantu πŸ™‚

      • Terima kasih pak ternyata memang karena space datanya sudah hampir tidak mencukupi.
        pak mau nanya lagi, kenapa tiap ingin melakukan shrink database harus melakukan remove mirror dulu ya?
        apakah session mirror mengganggu shrink database ?

      • Mas Nandimas, sangat tidak di sarankan untuk melakukan shrink database. Kalau memang space tidak cukup, mungkin bisa melakukan shrink log database saja. Dan itupun (shrink log) akan mempengaruhi performance db tersebut, karena catching query tersimpan di log database.

  5. salam kenal mas faisal

    bole yaa.. sekali2 shering problem disini.,
    saya punya 1 masalah mengenai miroring.. ketika miroring sudah berjalan dan kemudian sering terjadi status synchronizing atau putus mirorong yg gak mau up sendiri. kira2 apa yg hrs saya lakukan selain restart server.

    • Salam kenal mas agus. Hal pertama yang harus dicek yaitu coba cek services di kedua server tersebut (principal dan mirror) kemudian perhatikan juga space di server mirror apakah masih mencukupi atau tidak. Hal itu pernah saya alami ketika space tidak cukup maka proses mirorring tidak berjalan dengan normal. Semoga bermanfaat πŸ™‚

  6. Salam kenal Mas Faisal nama saya Andri , maaf mau tanya beberapa hal :
    1. Apabila server principal down, maka server mirroring secara otomatis akan berubah menjadi server principal dan sebaliknya. Maksutnya dan sebaliknya ini apakah server yg principal berubah jadi mirror? padahal server principal kan lagi down?
    2. Server principal down ini , maksutnya down nya seperti apa ya? Misalkan down-nya karena server tiba tiba mati, apakah proses failover baik yg manual atau otomatis bisa berjalan?
    3. Berdasarkan pengalaman Mas Faisal apakah sistem mirroring ini tidak membebani kinerja server principal?

    Mohon maaf Mas banyak pertanyaanya πŸ™‚ . Terima kasih banyak

    • Salam kenal juga mas Andri. Saya jawab satu per satu ya.
      1. Ya benar server mirroring akan menjadi principal. Maksudnya, ketika server principal down, kita bisa melakukan failover secara manual atau otomatis (jika ada witness) ke server mirroring sehingga server mirroring tersebut yang menjadi aktif dan bisa diakses oleh aplikasi dan user.
      2. Ada banyak kendala down mas, seperti power failure, services stop, process hang, atau space sudah full. Jika downnya server principal mendadak mati dan tidak bisa diakses sama sekali, berarti proses failover manual tidak bisa di lakukan. Untuk mengantisipasi hal ini, berarti kita harus menyiapkan strategi di awal ketika akan melakukan Database Mirorring yaitu menggunakan server witness yang fungsinya akan memantau dan memindahkan proses failover secara otomatis .
      3. Selama menggunakan proses mirroring, database kami blm pernah ada masalah selama space hdd di kedua server tersebut masih cukup. Malahan database kami pernah di cluster dan juga dimirorring istilahnya sql cluster yang di mirroring πŸ˜€
      .
      Gpp mas, yang penting bisa sharing ilmu meskipun sedikit dan mungkin blm bisa menjawab secara lebih detil.

  7. Hi, mau tanya, apakah saat pembuatan mirroring ini user tidak boleh akses (insert,update) ke database principal hingga proses mirroring sukses?

    Tks ya

    • Maaf, baru respon. Iya betul, user tidak boleh akses maupun query ke database principal selama ada proses pembuatan mirroring. Karena proses pembuatan database mirroring ini harus dibuat sama persis antara server principal dengan server mirror. Oleh karena itu, semua transaksi harus di hentikan. Untuk menghindari adanya perbedaan isi dari transactional log. Jika sudah selesai, user diperbolehkan kembali mengakses dan menjalankan query dll. Semoga bermanfaat.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s