Backup Database MySQL/MariaDB dengan Bash Shell

Salah satu tugas yang paling penting setiap sysadmin adalah perlunya sering melakukan backup database MySQL/MariaDB. Dalam banyak kasus, database adalah media penyimpanan data yang sudah tidak dapat terelakkan lagi dan kebanyakan menggunakan MySQL bahkan sekarang sudah banyak yang beralih menggunakan MariaDB dengan kemampuan yang sama dengan MySQL tetapi dengan pengembangan yang lebih powerfull. Sementara sebagian besar sysadmin dalam membuat backup sering melalui phpmyadmin ataupun dengan mendata satu demi satu database yang ada, sehingga bisa terjadi kelewatan atau terlupakan jika ada database baru yang terbentu.
 
Nah.. berikut adalah kode commandline linux (bisa juga untuk Mac) untuk melakukan backup semua database yang ada di server tanpa harus mendata satu-satu databasenya, sehingga dengan 1 cron bisa terbackup semua database berikut kodenya:
#!/bin/bash 
 
HOST="127.0.0.1" 
PORT=3306 
USER="userdb" 
PASSWORD="passwd" 
 
databases=`mysql -h"$HOST" -P$PORT -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" != _* ]] ; then 
        echo "Dumping database: $db" 
        mysqldump --single-transaction --skip-comments -c --replace --routines --skip-add-locks --force -h"$HOST" -P$PORT -u"$USER" -p"$PASSWORD" --add-drop-table -i $db | sed -E 's/DEFINER=`[^`]+`@`[^`]+`//g' | gzip -9 -c > `date +%Y%m%d`.$db.sql.gz 
    fi 
done 
untuk melakukan restore bisa menggunakan kode berikut
gunzip < /tmp/filedatabase.sql.gz | mysql -h"$HOST" -P$PORT -u"$USER" -p"$PASSWORD" nama_database
Semoga script ini bisa bermanfaat bagi sysadmin yang lain.

The power of documents

Kami sajikan dengan bahasa yang mudah dengan disertai command line yang bisa di copy-paste sehingga memudahkan untuk melakukan modifikasi command line