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.
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]
user = backup
password = ganti_dengan_password_yang_diinginkan
Lalu set permission menjadi read-write untuk owner saja, dengan command:
chmod 0600 mysqluser.cnf
Lalu buat directory untuk menyimpan file backup. Misalkan kita beri nama folder tersebut mariadb. Untuk membuat directory bisa dengan dengan command:
mkdir mariadb
Terakhir, 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_%W
Misalkan script untuk backup kita beri nama backup-mariadb-all.sh . Isi script tersebut adalah:
#!/usr/bin/env bash
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
Lalu set permission agar script tersebut bisa dieksekusi dengan command:
chmod +x backup-mariadb-all.sh
Untuk menjalankan script tersebut bisa dengan command:
./backup-mariadb-all.sh

Komentar

Postingan populer dari blog ini

Deploy QT Windows (*.dll yang dibutuhkan)