Lewati ke isi

Pencadangan & pemulihan pangkalan data pada MariaDB

Persiapan

  • host sumber

  • host tujuan

  • ketersediaan akses pengguna pada host sumber dan tujuan untuk melakukan:
  • mencadangkan pangkalan data
  • memulihkan pangkalan data
  • program MariaDB-backup

Proses

  • Proses akan dilakukan pada konsol peladen tujuan
  • Nama pengguna dan kata sandi pada kedua peladen sudah disiapkan sama
ssh -v db02-mariadb104-01

Alat

dnf install -y MariaDB-backup

Akses pengguna

# variabel
PENGGUNA_CADANG_PULIH="nama_pengguna"
SANDI_CADANG_PULIH="lalalalululi"
PELADEN_CADANG_PULIH="%"

# membuat pengguna pencadangan & pemulihan
mysql -uroot -hlocalhost -p <<EOF
CREATE USER '${PENGGUNA_CADANG_PULIH}'@'${PELADEN_CADANG_PULIH}' IDENTIFIED BY '${SANDI_CADANG_PULIH}';
GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT, SELECT ON *.* TO '${PENGGUNA_CADANG_PULIH}'@'${PELADEN_CADANG_PULIH}';
FLUSH PRIVILEGES;
EOF

Pencadangan & pemulihan

# variable
PELADEN_SUMBER="10.20.30.40"
PORTA_SUMBER="112233"
PANGKALAN_DATA_SUMBER="nama_skema"
NAMA_BERKAS_SQL="${PANGKALAN_DATA_SUMBER}_`date +"%Y%m%d"`.sql"
PENGGUNA_CADANG_PULIH="nama_pengguna"

# pencadangan pangkalan data
mysqldump --single-transaction \
  --quick \
  -h $PELADEN_SUMBER \
  -P $PORTA_SUMBER \
  -u $PENGGUNA_CADANG_PULIH \
  -p $PANGKALAN_DATA_SUMBER \
  > $NAMA_BERKAS_SQL

# mengintip isi berkas hasil pencadangan pangkalan data
head -n 25 $NAMA_BERKAS_SQL

# variable
PELADEN_APLIKASI="10.20.30.0"
PELADEN_PANGKALAN_DATA="10.20.30.255"
PENGGUNA_APLIKASI="app00_kecebadai"
PANGKALAN_DATA_APLIKASI="app00_kecebadai"
SANDI_APLIKASI="lalalalililu"
CHARSET="utf8mb4"
COLLATION="utf8mb4_general_ci"

# membuat pangkalan data, pengguna aplikasi dan memberikan aksesnya
mysql -uroot -hlocalhost -p <<EOF
CREATE DATABASE ${PANGKALAN_DATA_APLIKASI} CHARACTER SET = '${CHARSET}' COLLATE = '${COLLATION}';
GRANT ALL PRIVILEGES ON ${PANGKALAN_DATA_APLIKASI}.* TO '${PENGGUNA_APLIKASI}'@'${PELADEN_APLIKASI}' IDENTIFIED BY '${SANDI_APLIKASI}';
FLUSH PRIVILEGES;
EOF

# pemulihan menggunakan akun root
mysql -u $PENGGUNA_APLIKASI -h $PELADEN_PANGKALAN_DATA \
  -p $PANGKALAN_DATA_APLIKASI \
  < $NAMA_BERKAS_SQL

Penyelesaian

Rujukan