Skip to main content

Backup & Restore menggunakan Mysqlsh

Berikut contoh script backup MySQL menggunakan MySQL Shell (mysqlsh) — ini adalah cara modern dan lebih cepat dibanding mysqldump, karena mendukung parallel dump, compression, dan incremental backup (jika ke InnoDB Cluster).


🧩 1. Contoh backup full instance (semua database)

mysqlsh \
  --uri bkpuser@mysql-host:3306 \
  --password='YourPasswordHere' \
  -- util dump-instance /path/to/backup \
  --threads=8 \
  --compress

Penjelasan:

ParameterArti
--uriFormat koneksi: user@host:port
--passwordPassword untuk user (bisa dikosongkan agar prompt meminta input)
util dump-instance /path/to/backupMelakukan dump seluruh instance MySQL ke folder /path/to/backup
--threads=8Paralelisme (semakin besar = semakin cepat)
--compressKompres output dump menjadi .zst (Zstandard)

🧩 2. Contoh backup hanya satu database

mysqlsh \
  --uri bkpuser@mysql-host:3306 \
  --password='YourPasswordHere' \
  -- util dump-schema elao_prod /mnt/db-backup/elao_prod_backup \
  --threads=4 \
  --compress

Ini hanya akan membackup database elao_prod ke direktori /mnt/db-backup/elao_prod_backup.


🧩 3. Contoh backup hanya tabel tertentu

mysqlsh \
  --uri bkpuser@mysql-host:3306 \
  --password='YourPasswordHere' \
  -- util dump-tables elao_prod ./backup/elao_prod_orders \
  --tables orders,customers \
  --threads=4 \
  --compress

Hanya tabel orders dan customers dari database elao_prod.


🧩 4. Contoh script bash otomatis (backup harian)

#!/bin/bash
# mysqlsh_backup.sh
# Backup MySQL menggunakan mysqlsh util dump-instance

HOST="mysql-shared-prod-04.mysql.database.azure.com"
USER="bkpuser"
PASS="YourPasswordHere"
BACKUP_DIR="/mnt/db-backup/mysqlsh"
DATE=$(date +"%Y%m%d")

mkdir -p "$BACKUP_DIR/$DATE"

mysqlsh --uri ${USER}@${HOST}:3306 --password="${PASS}" \
  -- util dump-instance "$BACKUP_DIR/$DATE" \
  --threads=8 \
  --compress

if [ $? -eq 0 ]; then
  echo "Backup berhasil disimpan di $BACKUP_DIR/$DATE"
else
  echo "Backup gagal!"
fi

🧩 5. Restore hasil backup

Untuk melakukan restore, gunakan perintah:

mysqlsh \
  --uri admin@mysql-host:3306 \
  --password='YourPasswordHere' \
  -- util load-dump /path/to/backup \
  --threads=8