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 .
Kamis, 12 November 2009
Langganan:
Postingan (Atom)