Membuat backup data server adalah pekerjaan wajib bagi seorang administrator, itu bertujuan sebagai langkah penyelamatan jika terjadi hal buruk dengan server, misalnya kerusakan sistem baik hardware maupun software, aktivitas cracker yang merusak sistem, atau bahkan faktor human errors of administrator.
Ok, sekarang yang menjadi kasus backup adalah backup database MySQL dengan OS Ubuntu 12.04 LTS. Sebelum masuk ke backup database secara otomatis, ada baiknya kita pahami terlebih dahulu perintah-perintah dasar export/import MySQL, berikut perintah-perintah dasarnya:
Export dan Import Database MySQL
Untuk mengexport database mysql ke dalam bentuk file .sql caranya sbb:
Syntax:
1 |
mysqldump –u [username] –p [password] [nama_DB_yang_akan_dieksport] > [path/penyimpanan/nama_DB.sql] |
Contoh:
1 |
root@namaserver:/home/administrator#mysqldump -u username -p nama_database > nama_database_backup.sql |
dengan perintah di atas file hasil export akan langsung diletakkan di direkrori /home/administrator
1 |
root@namaserver:/home/administrator#mysqldump -u username -p nama_database > /var/backup/nama_database_backup.sql |
dengan perintah di atas file hasil export akan diletakkan di direktori /var/backup/
Untuk import database:
Buatlah database terlebih dahulu, misalnya:
1 2 |
#mysql -u root -p mysql>CREATE DATABASE databaseku; |
Syntax:
1 |
#mysql -u root -p nama_database < /lokasi/direktori/file.sql |
Contoh:
1 |
#mysql -u root -p databaseku < /home/administrator/backup-databaseku.sql |
Tidak terlalu susah bukan? Ok, kita lanjut agar perintah-perintah backup database MySQL dapat berjalan secara otomatis.
Buat User selain root tanpa password di MySQL yang mempunyai privileges terbatas:
1 2 3 |
#mysql –uroot –p mysql>CREATE USER denbagusengarso; mysql>GRANT ALL PRIVILEGES ON databaseku.* to ‘denbagusengarso’@’localhost’ ; |
Kemudian buatlah sebuah file yang bernama autobackup.sh (sebagai contoh letakkan pada direktori umum dulu saja, /home/administrator/, ini tidak wajib & boleh dimana saja)
1 |
#vi autobackup.sh |
Kemudian isi file tersebut dengan script berikut ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#!/bin/bash # # Config # now_week=$(date +%Y/%m) fileName='backup-tpdk-'$(date +%d%m%Y) dbUser='denbagusengarso' #Isi dengan username MySQL dbPass='' #Kosongkan saja passwordnya dbHost='localhost' namaDB='mydatabase_db' dirname='mydatabase' if [ $namaDB = "" ]; then dbDatabase="--all-databases" else dbDatabase="--databases $namaDB" fi backupFolder="/home/administrator/backup/backup-$dirname/db/$now_week/" # # End Config # if [ ! -e "$backupFolder" ]; then mkdir -p "$backupFolder" fi if [ "$dbPass" != "" ]; then dbPass="-p=$dbPass" fi # # Functions # /usr/bin/mysqldump -u $dbUser $dbDatabase --single-transaction > $backupFolder$fileName.sql |
Test dan pastikan script autobackup.sh berjalan dengan baik
Ubah permission file autobackup.sh sehingga bisa menjadi file yang siap untuk dieksekusi
1 |
#chmod +x autobackup.sh |
Kemudian eksekusi file tersebut
1 |
#sh autobackup.sh |
Jika tahapan-tahapan di atas tidak ada masalah, langkah selanjutnya adalah membuat penjadwalan di crontab
1 |
#crontab –e |
Kemudian isi dengan baris perintah berikut ini:
1 |
0 21 * * 1-5 /home/administrator/ autobackup.sh 2>&1 >> /home/administrator/autobackup.log |
Maksud dari perintah crontab di atas adalah setiab hari senin s.d jumat (1-5), jam 21 menit ke 0 (21:00) eksekusi script autobackup.sh yang terletak di path /home/administrator/ dan catat aktivitasnya ke autobackup.log.
untuk log nya harus bikin file autobackup.log dulu gak? atau suah otomatis ada ?