MySQL.svgProses backup mysql database memiliki beberapa alternatif disesuaikan dengan pertimbangan efisiensi serta efektifitas dari kondisi database di sisi server. Dalam dokumentasi artikel ini disampaikan tahapan serta prosesnya baik itu menggunakan perintah dari /usr/bin/mysqldump maupun menggunakan bash script. Tahapan serta proses alternatifnya tersebut adalah sebagai berikut.

Backup MySQL Database

Pertama perlu diketahui terlebih dahulu untuk proses backup satu database mysql sebagai berikut.

# mysqldump nama_database > nama_database.sql

Proses backup dua atau lebih dari satu database mysql dalam satu file .sql sebagai berikut.

# mysqldump --databases nama_database1 nama_database2 > dua_database.sql

Proses backup seluruh database mysql dan disimpan dalam satu file .sql sebagai berikut.

# mysqldump --all-databases > all_databases.sql

Backup seluruh database per mysql database menggunakan bash script.

# vim allbackup-db.sh
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/backup/mysql/$TIMESTAMP/"
MYSQL_USER="root"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
mkdir -p "$BACKUP_DIR/"
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
for db in $databases; do
  echo "exporting database $db"
  $MYSQLDUMP --force --opt --databases $db > "$BACKUP_DIR/$db.sql"
done

Jalankan proses backup menggunakan script tersebut dengan perintah berikut.

# chmod +x allbackup-db.sh && sh allbackup-db.sh

Atau bisa langsung didownload terlebih dahulu menggunakan wget kemudian jalankan bash script tersebut menggunakan perintah sebagai berikut.

# wget -N https://script.chrootid.com/allbackup-db.txt -O /root/allbackup-db.sh && chmod u+x,go-rwx allbackup-db.sh && /root/allbackup-db.sh

Seluruh mysql database tersimpan di dalam direktori /var/lib/mysql sehingga direktori tersebut bisa dibackup juga untuk kelengkapan databackup mysql database. Terkait dengan proses backup file atau direktorinya dapat melalui hyperlink disini dengan /var/lib/mysql sebagai nilai dari direkrtori yang hendak di generate backup.

Restore MySQL Database

 Dari hasil database yang terbackup, untuk proses restorasi satu database mysql adalah sebagai berikut.

# mysql nama_database < nama_database.sql

Restorasi satu mysql database dari beberapa atau seluruh database yang tersimpan dalam satu file .sql.

# mysql --one-database nama_database < all_databases.sql

Apabila memiliki list databackup file .sql database dari hasil generate seluruh mysql database per nama database maka dapat diproses importing atau restorasinya menggunakan bash script berikut.

# vim allrestore-db.sh
TIMESTAMP=$(date +"%F")
BACKUP_DIR="/backup/mysql/$TIMESTAMP/"
MYSQL_USER="root"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump
touch /root/dbname
ls $BACKUP_DIR > /root/dbname
cat /root/dbname|while read db; do
	echo "create database $db"
	$MYSQL -e "create database $db;"
	echo "importing database $db"
	$MYSQL $db < $BACKUP_DIR/$db.sql
done

Nilai dari variabel $BACKUP_DIR tersebut masih merujuk pada direktori tanggal yang sama dengan hasil dari direktori yang apabila baru saja diproses generate backup. Tentunya nilai dari variabel tersebut bisa disesuaikan dengan lokasi direktori dimana seluruh file database .sql tersimpan.
Jalankan bash script tersebut menggunakan perintah sebagai berikut.

# chmod +x allrestore-db.sh && sh allrestore-db.sh

Atau bisa langsung didownload terlebih dahulu menggunakan wget kemudian jalankan bash script tersebut menggunakan perintah sebagai berikut.

# wget -N https://script.chrootid.com/allrestore-db.txt -O /root/allrestore-db.sh && chmod u+x,go-rwx allrestore-db.sh && /root/allrestore-db.sh