Cara Backup Database – Tutorial ini akan menunjukkan kepada Anda cara membuat skrip shell yang akan digunakan untuk melakukan backup semua database MySQL Anda dan cara menjadwalkan pencadangan agar berjalan setiap hari.

Langkah 1: Buat Skrip Cadangan Buat folder untuk menyimpan skrip cadangan Anda. Saya sarankan / skrip untuk contoh ini:

sudo mkdir /scripts

Buat file bernama mysql-backup.sh di dalam folder skrip:

sudo vim /scripts/mysql-backup.sh

Tambahkan kode berikut ke file dan simpan:

#!/bin/bash
#----------------------------------------
# OPTIONS
#----------------------------------------
USER='root'       # MySQL User
PASSWORD='webdev' # MySQL Password
DAYS_TO_KEEP=0    # 0 to keep forever
GZIP=1            # 1 = Compress
BACKUP_PATH='/backups/mysql'
#----------------------------------------

# Create the backup folder
if [ ! -d $BACKUP_PATH ]; then
  mkdir -p $BACKUP_PATH
fi

# Get list of database names
databases=`mysql -u $USER -p$PASSWORD -e "SHOW DATABASES;" | tr -d "|" | grep -v Database`

for db in $databases; do

  if [ $db == 'information_schema' ] || [ $db == 'performance_schema' ] || [ $db == 'mysql' ] || [ $db == 'sys' ]; then
    echo "Skipping database: $db"
    continue
  fi
  
  date=$(date -I)
  if [ "$GZIP" -eq 0 ] ; then
    echo "Backing up database: $db without compression"      
    mysqldump -u $USER -p$PASSWORD --databases $db > $BACKUP_PATH/$date-$db.sql
  else
    echo "Backing up database: $db with compression"
    mysqldump -u $USER -p$PASSWORD --databases $db | gzip -c > $BACKUP_PATH/$date-$db.gz
  fi
done

# Delete old backups
if [ "$DAYS_TO_KEEP" -gt 0 ] ; then
  echo "Deleting backups older than $DAYS_TO_KEEP days"
  find $BACKUP_PATH/* -mtime +$DAYS_TO_KEEP -exec rm {} \;
fi

Anda akan melihat 5 opsi yang dapat dikonfigurasi di awal skrip ini. Yang utama yang perlu Anda edit adalah USER dan PASSWORD. Ini harus diubah menjadi pengguna MySQL dan kata sandi yang memiliki izin untuk membuat daftar dan membuat cadangan basis data.

Setelah Anda memodifikasi opsi, buat skrip dapat dieksekusi dengan perintah berikut:

sudo chmod +x mysql-backup.sh

Anda sekarang dapat menguji skrip cadangan dengan menjalankan:

sudo ./mysql-backup.sh

Langkah 2: Buat Tugas Terjadwal Crontab Sekarang kita akan menjadwalkan skrip cadangan untuk dijalankan setiap hari. Kami akan melakukan ini dengan menambahkan panggilan ke skrip mysql-backup.sh ke root crontab. Jalankan perintah berikut untuk membuka file root crontab:

sudo crontab -e

Sekarang tambahkan ke baris terakhir dari file berikut ini:

@daily sh /scripts/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1

Simpan file dan kemudian tunggu skrip dijalankan. Anda dapat memeriksa kesalahan di /var/log/mysql-backup.log. Setelah Anda senang itu berfungsi, Anda dapat menghapus >> /var/log/mysql-backup.log 2> & 1 dari file crontab.

Output dari cadangan yang berhasil dengan GZIP diaktifkan:

Kesimpulan Itu dia. Anda sekarang harus memiliki cadangan harian dari semua database MySQL Anda. Opsi default skrip akan membuat cadangan terkompresi tanpa batas. Anda harus mengubah opsi DAYS_TO_KEEP jika Anda ingin menghemat ruang disk. Jika Anda memiliki pertanyaan atau Anda memiliki cara yang lebih baik untuk membuat cadangan database MySQL, tinggalkan komentar di bawah ini.