Membuat script untuk backup semua database MariaDB dan MySQL
Buat sebuah user di MariaDB atau MySQL yang berfungsi untuk melakukan backup. Misalkan user bernama: backup. Buatlah user ini mengunakan user root.
Kemudian buatlah sebuah file misalkan kita beri nama mysqluser.cnf. Isi dengan username dan password yang sudah kita buat tadi.
create user backup identified by 'ganti_dengan_password_yang_diinginkan';
GRANT SELECT, SHOW DATABASES, SHOW VIEW, LOCK TABLES on *.* to backup;
flush privileges;
Kemudian buatlah sebuah file misalkan kita beri nama mysqluser.cnf. Isi dengan username dan password yang sudah kita buat tadi.
[client]Lalu set permission menjadi read-write untuk owner saja, dengan command:
user = backup
password = ganti_dengan_password_yang_diinginkan
chmod 0600 mysqluser.cnfLalu buat directory untuk menyimpan file backup. Misalkan kita beri nama folder tersebut mariadb. Untuk membuat directory bisa dengan dengan command:
mkdir mariadbTerakhir, kita buat scriptnya. Pada contoh di sini kita akan backup data mingguan, jadi format filename yang digunakan adalah:
<Nama_Database>_<Tahun>_week_<Minggu_ke-_dalam_tahun>Karena itu format date yang digunakan adalah:
date +_%Y_week_%WMisalkan script untuk backup kita beri nama backup-mariadb-all.sh . Isi script tersebut adalah:
#!/usr/bin/env bashLalu set permission agar script tersebut bisa dieksekusi dengan command:
CONFIG_PATH="mysqluser.cnf"
BACKUPDIR="mariadb/"
QUERY_RESULT=`mysql --defaults-extra-file=$CONFIG_PATH -e "show databases"`
DATABASES=`echo $QUERY_RESULT | sed -E "s/^Database //"`
NAME=`date +_%Y_week_%W`
IFS=' ' read -ra DBNAME <<< "$DATABASES"
for DBNAME in "${DBNAME[@]}"; do
echo 'Backup Database: '$DBNAME
FILENAME=$BACKUPDIR$DBNAME$NAME'.sql'
echo 'save to '$FILENAME
mysqldump --defaults-extra-file=$CONFIG_PATH $DBNAME > $FILENAME
done
chmod +x backup-mariadb-all.shUntuk menjalankan script tersebut bisa dengan command:
./backup-mariadb-all.sh
Komentar
Posting Komentar