Backup (mysql dump) Database MySQL Secara Terpisah

Kita perlu untuk melakukan backup pada database jika suatu saat mengalami permasalahan tinggal kita lakukan restore dari file hasil backup tersebut. MySQL sendiri menyediakan solusi perintah yang mudah untuk melakukan backup tersebut :

mysqldump -u root -p --all-databases > all_dbs.sql

Tetapi dengan perintah tersebut hasil backup semua database disimpan dalam satu file. Kita perlu untuk memisahkan hasil backup tersebut untuk setiap nama database, sehingga satu nama database satu file backup.

Caranya yakni dengan membuat file bash script yang melakukan perintah tersebut :

#! /bin/bash

TIMESTAMP=$(date +"%Y%m%d")
BACKUP_DIR="/backup/$TIMESTAMP"
MYSQL_USER="backup"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="password"
MYSQLDUMP=/usr/bin/mysqldump
 
mkdir -p "$BACKUP_DIR" 

databases=$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)" 

for db in $databases; do
   $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
done

Supaya script tersebut dieksekusi otomatis, masukkan ke dalam cron. Password dari user mysql perlu disimpan supaya sewaktu file tersebut di eksekusi oleh cron tidak perlu menampilkan prompt masukkan password. Oleh karena itu jangan gunakan user root tetapi buatlah user baru yang fungsinya hanya sebagai backup yang punya priveledges :
– SHOW DATABASES
– SELECT
– LOCK TABLES
– RELOAD
– SHOW VIEW

Tambahkan Komentar

Post Navigation