Kamis, 12 November 2009

Backup Data MySQL dengan Zmanda Recovery Manager (ZRM) for MySQL

Jika selama ini kita membackup database MySQL dengan menggunakan mysqldump dimana untuk membackupnya dilakukan secara manual. Dan juga pengaturan waktunya dimana untuk membackup dilakukan secara terjadwal, misalkan setiap hari pukul 3 dini hari.

Selain itu juga mesti dilakukan secara remote, artinya mengcopy data backup ke server terpisah daripada server database MySQL. Bayangkan klo backup database ditaruh di server database yang sama, lalu kemudian server tersebut mengalami bermasalah. Sama saja tidak membackup bukan?

Betul, kita bisa membuat skrip shell untuk melakukan backup otomatis dan langsung meremote ke server backup. Tetapi berdasarkan pengalaman, bagian yang tersulit dari membuat skrip shell ini adalah remote system. Bagaimana caranya agar data hasil backup itu dicopy ke server terpisah? Selama ini saya selalu gagal dalam meremote sistem. Skripnya sendiri sebenarnya sudah jadi, tinggal remote aja yang gak bisa-bisa....

Akhirnya berdasarkan rekomendasi dari supervisor, ternyata ada tool backup powerfull yang sesuai dengan kebutuhan diatas. Apakah itu? Dialah... (jreng..jreeng) Zmanda Recovery Manager (ZRM) for MySQL atau biasa disingkat dengan MySQL ZRM. Sudah bisa remote, backup otomatis lagi. Bahkan bisa melakukan penghapusan data lama yang tersimpan dalam jangka waktu tertentu, jadi tidak akan memenuhi harddisk. Oke ini cara penginstalannya, mari kita coba di RedHat 5!

1. Silahkan unduh MySQL ZRM di situs http://www.zmanda.com/backup-mysql.html, pilih yang Community, sejak kita akan menginstal di distro RedHat, maka ambil yang RPM. Ada dua file disini yaitu MySQL-zrm-2.1.1-1.noarch.rpm dan MySQL-zrm-client-2.1.1-1.noarch.rpm. Ambilah kedua file tersebut.

2. Sebelum instal, instal depedensinya terlebih dahulu yaitu perl-DBI, perl-XML-parser, and perl-DBD-MySQL. Kesemuanya itu bisa dicari di http://rpmfind.net ataupun di DVD/CD RedHat. Biasanya si secara default sudah terinstal jika memilih pilihan instal MySQL pada waktu instalasi RedHat.

3. Asumsi bahwa perl-DBI, perl-XML-parser, and perl-DBD-MySQL belum terinstal. Lakukan instalasi perl:
# rpm -ivh perl*.rpm

4. Jika sudah terinstal, maka instal Install MySQL-ZRM ke server dimana akan disimpan backup-nya (backup server, kita sebut 192.168.1.1).
# rpm -ivh MySQL-zrm-2.1.1-1.noarch.rpm

5. Install MySQL-ZRM-client ke server dimana ada database MySQL yang akan dibackup (database MySQL server, kita sebut aja 192.168.1.2).
# rpm -ivh MySQL-zrm-client-2.1-1.noarch.rpm

6. Di database MySQL server (192.168.1.2), buat username dan grants sejumlah permission.
# mysql
Nanti akan masuk ke mysql prompt, mysql>

mysql> grant select,show view, create view, insert, update, create, drop, reload, shutdown, alter, super,
lock tables, replication client on *.* to 'backup-user'@'192.168.1.1' identified by 'isiPassword';
mysql> show grants for 'backup-user'@'192.168.1.1';
mysql> flush privileges;

7. Buat direktori backup di backup server 192.168.1.1.
# mkdir /backup/databases/

8. Buat set backup di backup server (192.168.1.1):
# cd /etc/mysql-zrm
# mkdir db-tsunami

9. Copy configurasi mysql-zrm.conf ke direktori tadi:
# cp mysql-zrm.conf /etc/mysql-zrm/db-tsunami

10. Edit mysql-zrm.conf sesuai kebutuhan, misalkan berikut ini:
# vim /etc/mysql-zrm/db-tsunami/mysql-zrm.conf

backup-level=0 #0=full, 1=incremental backup
backup-mode=logical #logical menggunakan tool mysqldump, ada mode lain yaitu raw
destination=/storage-array/backup/databases-backup/
retention-policy=1M #jangka waktu penyimpanan data backup
compress=1
all-databases=1 #1 jika ya, 0 jika tidak
user="backup-user"
password="isiPassword"
host="192.168.1.2"
mailto="root@localhost" #opsional, gak pake juga gapapa, tapi saya masukkan biar ada pemberitahuannya

Maksudnya kita mo backup database 192.168.1.2 dengan rincian backup semua database yang ada, dikompresi, seluruh isi record database, dengan jangka waktu 1 bulan. Untuk detail konfigurasi bisa dilihat sampelnya di /etc/mysql-zrm/mysql-zrm.conf.

11. Tes backup:
# mysql-zrm-backup --backup-set db-tsunami

12. Liat hasilnya di direktori /backup/databases/db-dotproject/
Jika sukses, mestinya ada direktori tanggaljam berikut isinya backup-data, index, zrm_checksum.

13. Tambahkan ke penjadwalan agar berjalan otomatis:
# mysql-zrm-scheduler --add --interval daily --start 03:45 --backup-level 0 --backup-set db-tsunami

Maksudnya kita mo backup otomatis setiap hari pukul 3:45 WIB.

14. Cek apakah sudah dimasukkan kedalam jadwal:
# mysql-zrm-scheduler --query

15. Untuk pemeriksaan dan pelaporan bisa dilihat dengan perintah berikut ini:
# mysql-zrm-reporter --where backup-set=db-tsunami --show backup-status-info
# mysql-zrm-reporter --where backup-set=db-tsunami --show backup-performance-info
# mysql-zrm --action verify-backup --backup-set db-tsunami

16. Tes restore data. Ada dua metode yang dicoba. Kita coba restore dengan cara manual. Kita copy dulu file hasil backup ke server dimana ada MySQL server berjalan, misalkan 192.168.1.3.
# scp /backup/databases/db-tsunami/20090503194958/backup-data ryujin@192.168.1.3:/home/ryujin/Desktop

17. Karena backup dikompres dengan gzip, unkompres dulu:
# tar -xvf /home/ryujin/Desktop/backup-data
Hasilnya: backup.sql

18. Lakukan restore database:
# mysql < /home/ryujin/Desktop/backup.sql
Jika berhasil, seharusnya di 192.168.1.3 muncul database tsunami. Metode ini berguna sekali pada saat pengujian apakah backupnya valid apa tidak (tidak akan berpengaruh di database server 192.168.1.2, selain itu juga memperlihatkan bahwa seandainya kedepannya tidak memakai MySQL ZRM tidak akan jadi masalah ketergantungan aplikasi tertentu. Inilah yang disebut kemerdekaan open source :D ).

19. Kita pakai metode restore ala MySQL ZRM. Di server database 192.168.1.2 kita hapus database tsunami (hei ini kan percobaan bukan yang sebenarnya hehehe).

20. Cari tau backup db-tsunami.
# mysql-zrm-reporter --show restore-info --where backup-set=db-tsunami
REPORT TYPE : restore-info

backup_set backup_date backup_level backup_directory backup_status comment
-----------------------------------------------------------------------------------------------------------------------------------------------------
db-tsunami Mon 04 May 2009 09:58:53 0 /backup/databases/db-tsun Backup succeeded ----
AM WIT ami/20090503194958

21. Ambil direktori backup terakhir, lalu restore:
# mysql-zrm-restore --backup-set db-tsunami --source-directory /backup/databases/db-tsunami/20090503194958/

22. Voila, jadilah database te-restore kembali semula, seolah-olah tidak pernah dihapus :D

Hehe... itulah kehebatan tool MySQL ZRM :) . Silahkan mencoba :D .

Jumat, 15 Mei 2009

Membuat Webserver dan database (Apache+PHP+MySQL) di Linux (1)

Akhirnya inilah posting pertamaku tentang howto hehehe... dukung yaa.. :P

Apakah itu Webserver? Webserver itu fungsi utamanya adalah untuk menampilkan berbagai halaman web seperti HTML, PHP. Tidak harus online, bisa juga dibuat offline, terutama untuk menjalankan aplikasi berbasis Web yang sekarang ini sedang populer. Contohnya aplikasi Alfresco, DotProject, WordPress Blog, dan lain-lain. Informasi mengenai Webserver lebih lanjut dapat diliat di wikipedia.

Jenis-jenis webserver sendiri ada banyak, salah satu yang kita akan pakai adalah apache+php+mysql. Mengenai apakah itu mereka, lebih baik tanyakan ke Google aja.. cape deh cari teorinya hehehe :P

Berikut ini cara membuat webserver di linux. Ohya cara ini saya memakai terminal. Cara membuka terminal di linux secara umumnya dengan cara, Applications > Accesories > Terminal

Di distro RedHat 5:
1. Install dengan perintah:
[ryujin@terasi ~]# su
[masukkan password administrator]

[root@terasi ~]# yum install mysql mysql-server httpd php-mysql php-pear php-xml php-mysql php-cli php-imap php-gd php-pdo php-devel php-mbstring php-common php-ldap php httpd-devel

2. Jalankan webserver:
[root@terasi ~]# /etc/init.d/httpd start
[root@terasi ~]# /etc/init.d/mysqld start

3. Cek status apakah berjalan denga baik atau tidak:
[root@terasi ~]# /etc/init.d/httpd status
[root@terasi ~]# /etc/init.d/mysqld status

Di distro Ubuntu 8.10:
1. Install dengan perintah:
[redeyes@buntut ~]# sudo su
[masukkan password]

[root@buntut ~] apt-get install apache2 mysql-server mysql-client php5 php5-mysql php5-cli libapache2-mod-php5

2. Biasanya setelah terinstall, aplikasi apache2, dan mysql berjalan dengan sendirinya, kita bisa mengeceknya dengan cara:
[root@buntut ~] /etc/init.d/apache2 status
[root@buntut ~] /etc/init.d/mysqld status

Jika tidak berjalan, kita bisa menjalankan dengan cara:
[root@buntut ~] /etc/init.d/apache2 start
[root@buntut ~] /etc/init.d/mysqld start

Untuk postingan edisi ini, hanya membahas instalasi webserver apache+php+mysql saja. Kedepannya akan membahas tentang konfigurasi apache dan mysql. Liat aja nanti hehehehe :P

Deklarasi Partai HowTo

Yoi... dah lama gak ngeblog... ahaha.... tak terasa dah bertahun-tahun... oke deh saya langsung mulai saja. Tapi sebelumnya tepuk tangan dulu dunk.. hehehehe *plok..plok...plok...* Hei jangan lempar telur dunk!!

Jika selama ini dalam blogku ini merupakan curhat murni saja maka kali ini untuk kedepannya blog ini akan membahas howto dalam penggunaan Linux serta yang terkait dengan Linux itu sendiri.

Jadi bagi penggemar Windows dan MacOS maaf yaaa hehehe.. Untuk blog curhat murni, diputuskan di blog FS saja. Klo mau add saya di FS silahkan saja, dengan senang hati saya menerimanya.

Tapi perlu diketahui saya masih dalam tahap pembelajaran, masih perlu banyak hal yang perlu dipelajari. Sehingga ada kemungkinan saya tidak terlalu menguasai permasalahan howto yang ada. Dapat howto saja dari hasil ngoprek-ngoprek dan belajar dari berbagai sumber. Jadi maaf jika ada ketidaksesuaian hasil seperti yang diharapkan. Namun demikian, mari kita saling belajar untuk menjadi lebih baik..

Oke cukup kata-kataku yang sudah berbusa-busa.. nanti kalian pada mabok :D Langsung saja mampir ke blog ini... Terima kasih telah hadir, semoga puas dengan isi blogku ini.