Cara Backup Database Mysql ke S3 Object Storage

Pengantar

Backup database MySQL merupakan langkah penting untuk menjaga keamanan dan ketersediaan data. Tanpa backup, risiko kehilangan data akibat kegagalan hardware, kesalahan konfigurasi, atau serangan keamanan bisa sangat merugikan.

Dengan menyimpan backup ke object storage seperti MinIO (S3-compatible), pengguna mendapatkan beberapa keunggulan:

  • Aman: Data dapat disimpan terpisah dari server utama.

  • Skalabel: Dapat menampung backup dalam jumlah besar tanpa keterbatasan seperti storage lokal.

  • Mudah diakses: File backup dapat diunduh kapan saja melalui API atau S3 client.

 

Prasyarat

Sebelum melakukan backup, pastikan:

  • Server telah terpasang MySQL/MariaDB.

  • Anda memiliki akses ke MinIO (endpoint, access key, secret key, dan bucket name).

  • Terpasang tool S3 client, misalnya mc (MinIO Client).

Langkah-Langkah Backup Database ke MinIO

  1. MinIO Client
    mc adalah command-line tool resmi dari MinIO untuk mengelola object storage.
    • Install mc :
      wget https://dl.min.io/client/mc/release/linux-amd64/mc -O mc
      chmod +x mc
      sudo mv mc /usr/local/bin/
    • Set alias (harus connect ke port 9000 API, bukan 9001 console)
      mc alias set myminio http://IP-Address:9000 minioadmin MinioSecret123
    • Cek status:
      mc admin info myminio

  2. Buka crontab
    Jalankan perintah:
    crontab -e

    Jika pertama kali membuka, sistem akan menanyakan editor. Pilih nano agar lebih mudah digunakan.

    Kalau editor default bukan nano, bisa dipaksa dengan:

    export VISUAL=nano
    export EDITOR=nano
  3. Isi Konfigurasi Crontab
    Tambahkan konfigurasi berikut di dalam crontab:
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    */5 * * * * TMP_FILE="/tmp/wordpress-$(date +\%F-\%H\%M\%S).sql"; /usr/bin/mysqldump wordpress > "$TMP_FILE" && /usr/local/bin/mc cp "$TMP_FILE" myminio/wordpress/ && rm "$TMP_FILE" >> /var/log/wordpress_backup.log 2>&1
    

    Simpan dengan CTRL + O, lalu keluar dengan CTRL + X.

  4. Penjelasan Konfigurasi:
    • Menentukan PATH di Crontab
      Secara default, crontab tidak mewarisi environment PATH dari shell. Oleh karena itu, kita perlu menambahkan konfigurasi PATH di awal agar perintah yang digunakan dapat dikenali:
      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      
    • Menentukan Jadwal Cron
      Format cron adalah:
      minute hour day month day-of-week
      
      Penjelasan :
      • */5 * * * * → menjalankan perintah setiap 5 menit.

      • 0 5 * * * → menjalankan perintah setiap hari pukul 05:00.

    • Membuat Nama File Backup dengan Timestamp
      Untuk menghindari penimpaan file, kita gunakan timestamp pada nama file:
      TMP_FILE="/tmp/wordpress-$(date +\%F-\%H\%M\%S).sql"
      
      • %F → tanggal (YYYY-MM-DD).

      • %H%M%S → jam, menit, detik.

      • Contoh hasil: /tmp/wordpress-2025-09-10-153500.sql.

    • Dump Database WordPress

      Perintah mysqldump digunakan untuk menyalin seluruh isi database wordpress:

      /usr/bin/mysqldump wordpress > "$TMP_FILE"
      
    • Upload ke MinIO Menggunakan mc
      Hasil dump dikirim ke bucket wordpress di server MinIO menggunakan perintah:
      /usr/local/bin/mc cp "$TMP_FILE" myminio/wordpress/
      

      Pastikan alias myminio sudah diset sebelumnya:

      mc alias set myminio http://IP:9000 ACCESSKEY SECRETKEY
      
    •  Menghapus File Sementara

      Setelah berhasil diunggah, file di direktori /tmp dihapus agar tidak menumpuk:

      rm "$TMP_FILE"
      
    • Logging Hasil Eksekusi
      Untuk mencatat hasil dan error, tambahkan logging:
      >> /var/log/wordpress_backup.log 2>&1
      

Kesimpulan

Dengan konfigurasi crontab di atas, backup database WordPress dapat berjalan otomatis setiap 5 menit sekali, tersimpan di MinIO, dan lognya tercatat rapi.


Artikel Lain

WhatsApp Kami

Support : +6282138153600

Admin Finance : +6285191239466