Backup Otomatis Database MySQL ke AWS S3 Wasabi

  1. Umum
  2. sebulan yanglalu
  3. 3 min read

Pendahuluan

Melakukan backup secara rutin adalah langkah krusial untuk menjaga keamanan data Anda. Dalam artikel ini, kami akan memandu Anda langkah demi langkah untuk membuat backup otomatis database MySQL tertentu, yaitu audio_db, dan mengunggahnya ke Wasabi, penyedia layanan penyimpanan yang kompatibel dengan S3. Kami juga akan memastikan bahwa hanya tiga backup terbaru yang disimpan, dengan menggunakan endpoint kustom untuk Wasabi.

Langkah-langkah

1. Instalasi dan Konfigurasi AWS CLI

Untuk memulai, Anda perlu menginstal AWS CLI di server Anda dan mengkonfigurasinya dengan kredensial Wasabi Anda.

  • Instal AWS CLI:

sudo apt-get install awscli # Untuk Ubuntu/Debian
sudo yum install awscli # Untuk CentOS/RHEL

  • Konfigurasi AWS CLI: Jalankan perintah berikut untuk mengonfigurasi AWS CLI dengan kredensial Wasabi Anda:

aws configure

Masukkan Access Key ID, Secret Access Key, region default (misalnya us-east-1), dan format output default (misalnya json).

2. Buat Skrip Backup

Buat skrip bash yang akan melakukan backup database MySQL Anda dan mengunggahnya ke Wasabi.

cd /usr/local/bin
nano backup_audio_db.sh

Buat direktori backup sementara :

sudo mkdir -p /var/backups
sudo chown $(whoami):$(whoami) /var/backups

Buat dan simpan skrip berikut dengan nama backup_audio_db.sh:

#!/bin/bash

# Variabel
DB_NAME=”audio_db”
DB_USER=”username”
DB_PASS=”password”
S3_BUCKET=”nama-bucket-anda”
S3_DIR=”backup/db”
DATE=$(date +”%Y-%m-%d-%H%M%S”)
BACKUP_NAME=”$DB_NAME-$DATE.sql.gz”
BACKUP_DIR=”/var/backups”
ENDPOINT_URL=”https://s3.ap-southeast-1.wasabisys.com” # Endpoint Wasabi

# Membuat direktori backup jika belum ada
mkdir -p $BACKUP_DIR

# Backup database tertentu
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/$BACKUP_NAME

# Unggah ke Wasabi
aws s3 cp $BACKUP_NAME s3://$S3_BUCKET/$S3_DIR/$BACKUP_NAME –endpoint-url $ENDPOINT_URL

# Hapus file backup lokal
rm $BACKUP_NAME

# Hapus backup lama dari Wasabi, hanya simpan 3 backup terbaru
aws s3 ls s3://$S3_BUCKET/$S3_DIR/ –endpoint-url $ENDPOINT_URL | grep $DB_NAME | sort | head -n -3 | awk ‘{print $4}’ | while read -r line; do
aws s3 rm s3://$S3_BUCKET/$S3_DIR/$line –endpoint-url $ENDPOINT_URL
done

echo “Backup database $DB_NAME selesai dan diunggah ke Wasabi.”

3. Berikan Izin Eksekusi pada Skrip

chmod +x /usr/local/bin/backup_audio_db.sh

4. Jalankan Skrip Secara Manual

Untuk menguji skrip, jalankan secara manual:

/usr/local/bin/backup_audio_db.sh

5. Tambahkan ke Cron Job

Tambahkan skrip ini ke cron job untuk menjalankan setiap hari pada pukul 23:45:

crontab -e

Tambahkan baris berikut di akhir file crontab:

>
45 23 * * * /usr/local/bin/backup_audio_db.sh
### Penjelasan Skrip
  1. Variabel:
    • DB_NAME: Nama database yang akan di-backup (audio_db).
    • DB_USER dan DB_PASS: Kredensial MySQL Anda.
    • S3_BUCKET: Nama bucket Wasabi Anda.
    • S3_DIR: Direktori di dalam bucket Wasabi tempat file backup akan disimpan.
    • DATE: Tanggal dan waktu saat ini untuk menandai backup.
    • BACKUP_NAME: Nama file backup yang akan dihasilkan.
    • BACKUP_DIR: Direktori sementara untuk menyimpan file backup sebelum diunggah ke Wasabi.
    • ENDPOINT_URL: URL endpoint untuk Wasabi (https://s3.ap-southeast-1.wasabisys.com).
  2. Membuat Direktori Backup:
    • mkdir -p $BACKUP_DIR: Membuat direktori backup jika belum ada.
  3. Backup Database Tertentu:
    • mysqldump -u $DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/$BACKUP_NAME: Membuat backup dari database audio_db dan mengompresnya.
  4. Unggah ke Wasabi:
    • aws s3 cp $BACKUP_DIR/$BACKUP_NAME s3://$S3_BUCKET/$S3_DIR/$BACKUP_NAME --endpoint-url $ENDPOINT_URL: Mengunggah file backup ke direktori backup/db di bucket Wasabi.
  5. Hapus File Backup Lokal:
    • rm $BACKUP_DIR/$BACKUP_NAME: Menghapus file backup lokal setelah diunggah.
  6. Hapus Backup Lama dari Wasabi:
    • aws s3 ls s3://$S3_BUCKET/$S3_DIR/ --endpoint-url $ENDPOINT_URL | grep $DB_NAME | sort | head -n -3 | awk '{print $4}' | while read -r line; do aws s3 rm s3://$S3_BUCKET/$S3_DIR/$line --endpoint-url $ENDPOINT_URL; done: Memeriksa daftar file backup di Wasabi, mengurutkannya, dan menghapus backup lama sehingga hanya 3 backup terbaru yang disimpan untuk audio_db.
Kesimpulan

Dengan mengikuti langkah-langkah ini, Anda dapat melakukan backup otomatis untuk database audio_db setiap hari pada pukul 23:45 dan hanya menyimpan tiga backup terbaru di Wasabi. Skrip ini memastikan bahwa data Anda selalu terlindungi dan mudah diakses saat dibutuhkan. Backup rutin adalah bagian penting dari strategi keamanan data, dan menggunakan layanan penyimpanan awan seperti Wasabi membantu memastikan bahwa data Anda aman dan terlindungi dari kehilangan.

Artikel Lain : Sinkronisasi Otomatis Direktori ke Wasabi Menggunakan AWS CLI

**Jika terjadi eror :**

-bash: /usr/local/bin/backup_toko_db.sh: /bin/bash^M: bad interpreter: No such file or directory

Gunakan perintah :

sed -i ‘s/\r//’ /usr/local/bin/backup_toko_db.sh

umum