Halo teman Ngide, kali ini kita akan belajar bagaimana cara membuat backup database di server Ubuntu. Kenapa kita wajib mempunyai backup? Backup akan sangat penting ketika terjadi kesalahan atau kehilangan data di server sehingga masih ada data cadangan yang bisa kita pakai.
Pada tutorial ini kita akan membuat sebuah script untuk mejalankan backup dan membuat penjadwalan sehingga script tersebut berjalan setiap hari.
1. Membuat script backup
Langkah pertama kita adalah membuat sebuah script dengan nama backup-db.sh
di dalam folder scripts.
Buat dulu folder scritps
sudo mkdir /scripts
Buat file backup-db.sh
sudo vim /scripts/backup-db.sh
Lalu copy script di bawah ini ke dalam file tersebut:
#!/bin/bash
#----------------------------------------
# OPTIONS
#----------------------------------------
USER='root' # MySQL User
PASSWORD='webdev' # MySQL Password
DAYS_TO_KEEP=0 # 0 to keep forever
GZIP=1 # 1 = Compress
BACKUP_PATH='/backups/database'
#----------------------------------------
# Create the backup folder
if [ ! -d $BACKUP_PATH ]; then
mkdir -p $BACKUP_PATH
fi
# Get list of database names
databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "|" | grep -v Database`
for db in $databases; do
if [ $db == 'information_schema' ] || [ $db == 'performance_schema' ] || [ $db == 'mysql' ] || [ $db == 'sys' ]; then
echo "Skipping database: $db"
continue
fi
date=$(date -I)
if [ "$GZIP" -eq 0 ] ; then
echo "Backing up database: $db without compression"
mysqldump -u $USER -p$PASSWORD --databases $db > $BACKUP_PATH/$date-$db.sql
else
echo "Backing up database: $db with compression"
mysqldump -u $USER -p$PASSWORD --databases $db | gzip -c > $BACKUP_PATH/$date-$db.gz
fi
done
# Delete old backups
if [ "$DAYS_TO_KEEP" -gt 0 ] ; then
echo "Deleting backups older than $DAYS_TO_KEEP days"
find $BACKUP_PATH/* -mtime +$DAYS_TO_KEEP -exec rm {} ;
fi
Ada beberapa options yang harus kamu perhatikan disini:
- USER: user database/mysql
- PASSWORD: password database/mysql
- DAYS_TO_KEEP: 0 berarti file backup tidak akan pernah dihapus, jika kamu ingin hanya menyimpan data backup 30 hari kebelakang maka isi dengan 30
- GZIP: 1 untuk zip
- BACKUP_PATH: folder dimana hasil backup database kamu akan ditaruh. Disini kita simpan saja di ‘/backups/database’
JIka sudah di copy dan disesuaikan optionnya maka silakan tutup dan save file tersebut.
Beri akses execute untuk file backup-sb.sh
agar bisa di jalankan oleh server.
sudo chmod +x backup-db.sh
Jalankan dan test script yang sudah kita buat.
sudo ./backup-db.sh
Jika tidak ada error kamu bisa mengecek folder backups/database untuk melihat hasil backup yang sudah kita buat. Hasilnya mungkin seperti ini tergantung dengan isi database kamu y.
2. Penjadwalan Backup
Jika sudah berhasil membuat backup, maka sekarang kita melanjutkan membuat penjadwalan setiap hari.
Caranya dengan memanggil script backup-db.sh di dalam root crontab
.
Buka crontab:
sudo crontab -e
Tambahkan cron baru untuk memanggil script backup-db.sh
seperti di bawah ini:
@daily sh /scripts/backup-db.sh >> /var/log/mysql-backup.log 2>&1
Simpan dan close.
Kamu bisa menunggu script tersebut dijalankan oleh crontab. Kamu bisa mengecek jika backup berhasil atau error di /var/log/mysql-backup.log.
3. Penutup
Mudah kan? Sekarang kamu sudah mempunyai script untuk membackup database setiap hari. Ini sangat penting untuk jaga-jaga jika terjadi hal-hal yang tidak diingkan dan data kamu hilang?
Semoga tutorial ini bermanfaat untuk kalian ya. Silakan like & share ^^