Wednesday, September 27, 2006

Transaction Log shipping pada Microsoft SQL Server 2005

Artikel ini adalah merupakan kumpulan dari artikel-artikel yang membahas masalah Disasters Recovery Plan (DRP) pada Microsoft SQL Server. Dalam artikel ini saya coba uraikan mengenai step by step Log Shipping configuration pada SQL Server 2005.

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 option, kemudian lihat pada bagian recovery model, kalau masih simple harus dirubah menjadi Full/Bulk-Load.



Cara membuat konfigurasi Log Shipping
1. Klik kanan pada database yang akan kita buat Log Shipping-nya, kemudian pilih Task -> Ship Transaction Log



2. Klik “Enable this as a primary database in a log shipping configuration”



3. Klik tombol “Backup Setting” untuk membuat konfigurasi dari backup yang akan dijalankan pada server primer
4. Isi kolom “Network path to backup folder” dengan nama sharing dari folder yang telah kita buat.
5. Isi kolom “If the backup folder is located on the primary server”, dengan nama folder local yang ada di server.
6. Delete files older than : Isi dengan lamanya waktu yang dibutuhkan oleh SQL, sebelum file transaction log dihapus
7. Alert if no backup occurs within : Isi dengan lamanya waktu yang diperbolehkan SQL apabila terjadi kegagalan backup, sebelum SQL mengirimkan notifikasi
8. Job Name : Isi dengan nama Jobs
9. Schedule : Dipakai untuk merubah schedule dari backup yang berjalan
10. Setelah itu klik tombol OK



11. Kemudian klik tombol Add untuk membuat konfigurasi dari server tujuan (server sekunder)



12. Secondary server instance : Isi dengan meng-klik tombol connect untuk memilih server tujuan (server sekunder)
13. Secondary database : Diisi dengan nama database yang dipakai sebagai tempat untuk me-restore database pimer yang ada pada datasase sekunder (server sekunder)
14. Pada Tab Initialize Secondary Database, klik “Yes, generate a full backup …” apabila kita akan membuat full backup terlebih dahulu, sebelum Log Shipping ini dijalankan dan klik tombol restore option, apabila kita akan menempatkan file database di directory yang lain pada server sekunder. Sedangkan kalau kita sudah punya full backup untuk database yang bersangkutan kita bisa pilih option “Yes, restore an existing backup …” kemudian pilih file dari full backup database tersebut.





15. Pada Tab Copy Files, isi destination folder dengan nama folder pada server sekunder yang dipakai sebagai tempat menyimpan file transaction log yang di generate oleh SQL.
16. Delete copied files after : Diisi dengan lamanya waktu yang diperboleh untuk menghapus file-file log yang sudah lama.
17. Job name : Diisi dengan nama Job
18. Klik tombol schedule, apabila kita akan merubah schedule dari job yang kita buat.



19. Pada Tab Restore Transaction Log : Pilih option Standby Mode
20. Delay restoring backup at least : Diisi dengan waktu yang diperbolehkan untuk SQL agar menunda proses restore.
21. Alert if no restore occurs : Diisi dengan lamanya waktu yang diperbolehkan SQL untuk menunda proses backup, sebelum timbul notifikasi.
22. Klik tombol schedule apabila kita akan merubah schedule dari jon yang kita buat



23. Klik option Use a Monitor server Instance
24. Klik tombol Setting untuk menambahkan server yang berfungsi untuk memonitor jalannya Log Shipping ini



25. Klik tombol connect untuk menambahkan nama server yang berfungsi memonitor jalannya Log Shipping
26. Klik option “By impersonating the proxy account” sebagai cara untuk konek ke server tersebut
27. Delete history after : Diisi dengan lamanya waktu yang diperbolehkan SQL sebelum history dari job ini di hapus
28. Job Name : Diisi dengan nama Job





29. Setelah semua step tersebut kita set, klok tombol OK
30. SQL akan memberikan status dari Log Shipping Configuration yang kita buat tadi.





31. Setelah itu pada server sekunder kita akan terbentuk satu database dengan status standby/read only



32. Cara memonitor log shipping adalah dengan memilih menu report, dengan sebelumnya klik pada server tempat Log Shipping tersebut jalan, kemudian pilih Transaction Log Shipping Status



33. Dalam report tersebut kita bisa melihat status dari Log Shipping yang kita jalankan





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

Microsoft SQL Server 2000 Log Shipping Problem

Suatu hari, seorang teman bertanya kepada saya mengenai Log Shipping yang dia buat, “Kenapa Log Shipping-nya error out of sync dan bagaimana cara mengatasinya?”
Berikut ini adalah artikel untuk mejawab pertanyaan tersebut diatas.

1. Melihat error yang terjadi dalam Log Shipping adalah dengan melalui SQL Enterprise Manager Console yang dipakai sebagai Monitorng Server untuk proses Log Shipping



2. Pada Windows sebelah kanan akan terlihat tanda silang merah, sebagai tanda Log Shipping yang kita buat ada masalah.



3. Double Klik pada Log Shipping yang error tersebut, setelah itu akan muncul status dari Log Shipping yang kita buat. Pada contoh gambar dibawah adalah terjadi error pada proses backup dari Log Shippig ini, mengapa demikian ? Ini dikarenakan kita membuat setting agar SQL hanya akan bisa mengambil data (backup) selama 45 menit ke belakang dari waktu sekarang. (lihat gambar). Tetapi kalau kita lihat dari backup yang harus diambil oleh SQL adalah selama 1030 menit ke belakang, sehingga SQL tidak dapat memenuhi permintaan tersebut.





4. Untuk mengatasi error tersebut, atau supaya SQL bisa mengambil (backup) data selama durasi tersebut adalah dengan cara menaikkan Alert Threshold untuk proses backup menjadi >= waktu yang dibutuhkan oleh SQL



5. Setelah kita naikkan (dalam contoh menjadi 1035 menit), maka SQL akan dapat membuat backup untuk waktu ke belakang yang kita definisikan tersebut, dan error symbol pada Log Shipping monitoring akan hilang



6. Apabila yang error (out of sync) adalah pada proses restore, maka yang harus kita naikkan waktunya adalah yang ada pada tab Destination, dengan membuat durasi >= waktu yang dibutuhkan oleh SQL

7. Setelah error tersebut kita solve, maka Log Shipping pada SQL akan jalan normal kembali dan kita bisa memperkecil dari durasi untuk tresh hold tadi





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

Monday, September 25, 2006

Virtual Vending nempel di BLOG

Ada yang baru di halaman depan BLOG saya minggu ini... Ya ternyata ada sebuah frame kecil tempat menyimpan link ke Virtual Vending. Bagi mereka yang belum tau apa itu Virtual Vending bisa masuk ke sini http://www.v-vending.com

Frame ini baru di approve oleh owner Virtual Vending minggu ini, karena kalau nggak di approve jendela dari virtual vending ini tidak akan muncul alias hanya blank saja.

Dengan link ke virtual vending ini, orang yang akan belanja bisa langsung transaksi melalui BLOG saya ini tanpa harus masuk ke web sitenya Virtual Vending terlebih dulu, sehingga user tidak harus bolak-balik apabila akan melakukan transaksi.

Selamat memasuki era gaya belanja online yang benar-benar baru.

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