Friday, September 22, 2006

High Availability Microsoft SQL Server 2000 with Transaction Log Shipping

Transaction Log Shipping adalah salah satu kelebihan dari Microsoft SQL Server 2000 diantara sekian kelebihan-kelebihan yang lain, yang tentunya sangat berguna bagi kita sebagai pengguna.

Sebetulnya apa yang dimaksud dengan Transaction Log Sipping pada Microsoft SQL Server 2000 ?

Transaction Log Shipping adalah salah metode untuk menjaga availability dari data-data kita yang disimpan di Microsoft SQL Server 2000, dengan cara meng-copy Transaction Log yang ada pada server primer ke server sekunder, sehingga kita dapat mengurangi kemungkinan kehilangan data yang tidak kita harapkan apabila database pada server primer kita bermasalah. Transaction Log Shipping ini juga bisa kitagunakan sebagai backup dari database yang aktif, serta sebagai salah satu metode untuk proses DRP (Disasters Recovery Plan) pada suatu perusahaan, yang membutuhkan metode recovery yang cepat tanpa harus kehilangan data.

Kita bisa bayangkan apabila database yang berisi data-data penting pada suatu perusahaan hilang atau rusak, dan database administrator pada perusahaan tersebut hanya punya backup database hari sebelumnya, ini akan menimbulkan “bencana besar” pada perusahaan tersebut, apalagi kalau misalnya perusahaan terebut adalah merupakan perusahaan penyedia layanan jasa untuk public yang sistemnya tidak boleh mati sama sekali, tentunya ini menegerikan sekali.

Untuk itulah kita coba metode Log Shipping ini untuk mencegah terjadinya “bencana besar” tadi.

Apa yang diperlukan untuk metode Log Shipping ini ?

Untuk menggunakan metode Log Shipping ini ada beberapa hal yang harus kita perhatikan dan harus kita siapkan, diantaranya adalah :

1. Siapkan 2 server yang spesifikasinya hampir sama dengan server primer termasuk softwarenya. (1 server digunakan sebagai server sekunder dan 1 server lagi kita gunakan sebagai server untuk monitoring Log Shipping ini, kalau dirasa kita tidak punya dana untuk pengadaan server ini, kita siapkan saja 1 server yang spesifkasinya tidak terlalu jauh dengan server primer, dan untuk monitoring Log Shipping ini kita gunakan server sekunder)

2. Pastikan account yang dipakai sebagai startup SQL/SQLAgent Services di semua server adalah merupakan account domain. (Tidak direkomendasikan kita gunakan account local system sebagai account untuk startup SQL/SQLAgent Services, untuk penjelasan ini nanti kita bahas di topik lain).

3. Siapkan satu folder pada server primer dan share folder tersebut dengan memberikan full akses pada account/user yang kita pakai sebagai startup SQL/SQLAgent Services. (Boleh gunakan Group everyone, tetapi tidak di rekomendasikan, karena secara default semua user dalam domain termasuk kedalam group everyone)





4. Pastikan metode recovery model pada database kita sudah pada posisi Full/Bulk-Load. (Untuk merubah/melihatnya klik kanan pada database yang akan kita lakukan Log Shipping, kemudian klik properties, pilih tab option, kemudian lihat pada bagian recovery model, kalau masih simple harus dirubah menjadi Full/Bulk-Load.





Bagaimana cara setting metode Transaction Log Shipping ini ?

Untuk setting Log Shipping ini kita akan gunakan wizard database maintenance plan wizard pada Microsoft SQL Server 2000, dengan langkah-langkah sebagai berikut :
1. Klik kanan pada database yang akan kita buatkan Log Shipping kemudian pilih Maintenance Plan.



2. Klik next pada windows “Welcome to Database Maintenance Plan Wizard”



3. Klik option “Ship the transaction logs to other SQL Server (log shipping)”. (Option ini tidak akan muncul apabila recovery model pada database masih simple, lihat bagian Apa yang diperlukan untuk metode Log Shipping ini?), kemudian klik next.



4. Klik next pada windows “Update Data Optimization Information”.



5. Klik next pada windows “Database Integrity Check”



6. Klik next pada windows “Specify the Database Backup Plan”



7. Pada windows “Specify Transaction Log Backup Disk Directory” yang harus kita isi adalah :
a. Pilih option “Use this directory” dan isi dengan folder yang sebelumnya kita buat. (lihat bagian Apa yang diperlukan untuk motode Log Shiping ini ?)
b. Klik “Rremove files older than”, option ini adalah untuk memberikan perintah agar SQL menghapus file-file Transaction Log yang sudah kadaluarsa. (Option ini tergantung keperluan, kita akan simpan Transaction Log selama berapa lama di server, dan kita harus perhatikan juga masalah kapasitas dari harddisk yang ada di server)
c. Skip “Backup file extension” (Option ini untuk merubah extension dari file transaction log yang di simpan oleh server primer)



8. Pada windows “Specify the Transaction Log Share”, isi dengan nama network share dari folder yang sebalumnya kita buat dan share. (lihat bagian Apa yang diperlukan untuk motode Log Shiping ini ?)



9. Pada windows “Specify the Log Shipping Destination”, klik Add untuk menambahkan/memilih server sekunder.



10. Pada windows Add Destination Database yang harus kita isi adalah :
a. Server Nama -> Pilih server yang akan kita pakai sebagai server sekunder
b. Directory -> Isi dengan nama folder yang dipakai sebagai temapt untuk menampung file-file transaction log yang dicopykan dari server primer
c. Pilih Create and initialize new database apabila di server sekunder belum terbentuk satu database yang digunakan sebagai database sekunder, jika database sudah ada di server sekunder pilih database yang akan dipakai sebagai database sekunder (jika kita pilih option ini pastikan database sekunder tersebut masih bisa menerima restore dari file-file backup (menegenai backup dan restore database kita akan bahas dalam artikel yang lain). Isi “For Data” dengan nama directory tempat file data (MDF database) disimpan dan isi “For Log” dengan nama directory tempat file log (LDF database).
d. Pada option “Database Load State” pilih option “Standby Mode” agar database masih bisa menerima restore dari file-file backup yang masih belum di restore.
e. Klik “Terminate users in database” supaya jika ada user yang terkoneksi ke database diputus terlebih dahulu. Kemudian Klik OK



11. Setelah itu akan kembali ke windows “Specify Maintenance the Log Shipping Destinations”, klik next.



12. Pada windows “Initialize the Destination Database”, klik Perform a full backup now agar SQL Agent melakukan full backup terlebih dahulu pada database primer untuk kemudian di restore di database sekunder. Klik next.



13. Pada windows “Log Shipping Schedule” yang harus kita isi adalah :
a. Backup Schedule -> Jobs yang dilakukan secara kontinyu pada server primer untuk melakukan backup Transaction Log. Secara default server primer akan melakukan backup tiap hari, tiap 15 menit (kita bisa rubah jobs schedule ini berdasarkan kebutuhan, dan ini berpengaruh kepada masalah availability yang kita bahas dalam artikel ini, semakin kecil waktu yang dipakai, semakin kecil juga kemungkinan kita kehilangan data)
b. Copy/load Frequency -> Waktu yang dipakai untuk mengcopy file transaction Log dari server primer ke server sekunder (semakin kecil semakin bagus)
c. File retention period -> Berapa lama transaction log file yang ada akan disimpan dalam server
Klik next untuk ke proses selanjutnya.



14. Pada windows “Log Shipping Thresholds” yang harus diisi adalah :
a. Backup alert threshold -> berapa lama SQL bisa mengambil data-data yang belum dibackup, sedangkan pada saat bersamaan SQL harus membuat backup yang lain
b. Out of sync alert threshold -> berapa lama SQL mentolerir data yang belum di backup, sebelum SQL mengirimkan alert
Klik next untuk melanjutkan.



15. Pada windows “Specify the Log Shipping Monitor Server Information” diisi dengan server yang berfungsi sebagai server monitoring monitoring dari metode Transaction Log Shipping dan pilih metode koneksi ke server-nya apakah menggunakan Windows authentication atau SQL authentication?



16. Kosongkan write report to text file in directory apabila kita tidak menginginkan report dari database maintenance plan ini kemudian klik next. Tetapi kalau kita maenginginkan di generate, klik write report to text file kemudian isi degan nama folder tempat SQL menyimpan text file tersebut dan delete text report yang berumur lebih dari yang kita isikan dalam isian tersebut. Send email report to operator adalah apakah SQL akan mengirimkan report ini ke operator? (mengenai operator dan email kita akan bahas pada artikel lain)



17. Pada windows “Maintenance Plan History” dipakai untuk memerintahkan SQL apakah History dari Maintenance Plan ini akan disalin ke dalam system table? Jika kita menginginkannya kita hanya definisikan dimana tempat menyimpannya, apakah di local server atau di remote server? Dan berapa row yang diijinkan untuk ditulis ke dalam system table terebut. Kemudian klik next



18. Pada windows “Database Maintenance Plan Wizard Summary”, isi Plan name dengan nama dari Database Plan Maintenance yang kita buat tadi.



19. Setelah itu akan ada konfirmasi dari Database Plan Maintenance yang kita buat.







20. Untuk melihat hasil dari Database Maintenance tersebut kita bisa lihat melalui Jobs di SQL Server dan di server Sekunder terbentuk 1 database baru yang statusnya ReadOnly













Penutup

Dengan metode Transaction Log Shipping ini diharapkan bisa menjadikan database kita menjadi database yang High Availability.

Deni Kusdeni
Application Integration Specialist, INTIMEDIA
deni@intimedia.com

4 comments:

Anonymous said...

artikel yang cukup menarik karena disertai step by step

Anonymous said...

3. Klik option “Ship the transaction logs to other SQL Server (log shipping)”. (Option ini tidak akan muncul apabila recovery model pada database masih simple, lihat bagian Apa yang diperlukan untuk metode Log Shipping ini?), kemudian klik next. <<< saya sudah bolak balik seting full/bulk-load tapi tetap tidak muncul, apa yang salah

Anonymous said...

Kasus Pak Alfando sama dengan saya, log shippingnya ga muncul meski recovery dah full. Saya baru ngeh ternyata di server saya sql2000 standar gak ada fasilitas log shipping, yang ada di versi enterprise dan developer. Kalo sql2005, ver standarnya sudah ada log shipping.
cmiiw..

Anonymous said...

Salam kenal Mas, kenapa ketika di form dialog pemilihan server sekunder yang tampil hanya nama server Primer saja ? Terimakasih sebelumnya