Kali ini saya akan membuat sebuah tutorial melakukan Backup antar server Linux dengan mempergunakan RSync.
- Server A : web server utama berisi semua file-file website.
- Server B : web server cadangan yang bertugas melakukan backup
Syncronisasi file dan database
Server A > -------- > Server B
Rsync diperlukan untuk proses backup antar server, sehingga apabila ada masalah dengan server utama, tinggal mengganti DNS agar mengarah ke server cadangan.
Syarat rsync kali ini adalah harus sudah bisa Login dari Server B ke Server A tanpa mempergunakan password.
Selanjutnya kita install rsync dengan perintah :
apt-get clean
apt-get install rsync
Buat database dan user untuk mengakses database tersebut karena belum ada.
# mysql -u root
mysql> create database namadatabase;
Berfungi untuk membuat database dengan nama namadatabase
mysql> grant usage on *.* to namauserdb@localhost identified by 'passworddb';
Berfungsi untuk mengijinkan user namauserdb menyambung ke server dari localhost dengan password passworddb. Jangan lupa mempergunakan ' pada awal dan akhir password.
mysql> grant all privileges on namadatabase.* to namauserdb@localhost;
Berfungsi mengijinkan akses user namauserdb pada database namadatabase
mysql> flush privileges;
mysql> exit;
Untuk memastikan kita bisa masuk ke MySQL server dengan user dan password tadi, maka :
# mysql -u namauserdb -ppassworddb namadatabase
Lakukan rsync untuk menduplikasi isi dari direktory html dari Server A ke Server B :
# rsync -avzpog -e ssh root@173.xxx.xxx.xxx:/var/www/www.erawanarifnugroho.com /var/www/
Jika Port SSH sudah diganti selain Port 22, maka berikut adalah perintahnya :
# rsync -avzpog -e 'ssh -p sshport' user@server.ip.address:/mastersource /backupdestination
# rsync -avzpog -e 'ssh -p 2222' root@173.xxx.xxx.xxx:/var/www/www.erawanarifnugroho.com /var/www/
Melakukan backup Database MySQL dari Server A ke Server B :
# ssh root@173.xxx.xxx.xxx 'mysqldump -q --skip-lock-tables -u namauserdb --password=passworddb namadatabase' > /root/wp.sql
Melakukan import Database Backup dari Server A ke Server B :
# mysql -u namauserdb --password=passwordb namadatabase < /root/wp.sql
Setelah mengikuti semua langkah-langkah di atas, maka pada Server B di direktory /var/www/www.erawanarifnugroho.com akan tercipta sebuah direktory dengan isi yang sama dengan Server A.
Untuk automatisasi proses backup website dengan rsync pada tiap hari, tengah malam, Anda tinggal menambahkan script-script diatas pada cron.
Berikut contoh scryptnya :
nano /script_backup
....
#! /bin/sh
rsync -avzpog -e ‘ssh -p 2803’ root@174.xxx.xxx.xxx:/home/usersatu /home/
rsync -avzpog -e ‘ssh -p 2803’ root@174.xxx.xxx.xxx:/home/foldersatu /home/
Simpan scrypt tadi, dan buat supaya executable dengan cara : chmod +x /root/script_backup
Berikut adalah contoh crontab :
# m h dom mon dow command
30 * * * * sh /root/script_backup
Maksud dari crontab di atas adalah, setiap menit ke 30, script remote_backup yang tadi kita buat, akan dijalankan.
Dan script remote_backup tadi, akan mensyncronisasikan file dari server utama, ke server backup.