Beberapa pekan lalu, saya diminta oleh seorang teman untuk melakukan backup database MariaDB secara rutin (harian) dan hasil backup-nya haruslah terenkripsi. Untuk itu, pada kesempatan kali ini saya ingin mencoba membagikan sedikit bagaimana cara saya melakukan backup database MariaDB tersebut (hanya database, tidak beserta dengan konfigurasinya. Untuk backup dengan full konfigurasi bisa dilihat DI SINI).
Tanpa berlama-lama lagi, berikut ini adalah tahapannya:
Backup dan Encrypt
- Pertama, catat nama database apa saja yang ingin kalian backup. Jika ada 5, catat kelima-limanya.
- Setelah itu, masuk ke dalam direktori yang kalian inginkan dan buat sebuah bash script untuk menyimpan perintah mysqldump yang hasil akhirnya terenkripsi. Contoh bash script-nya adalah seperti berikut:
#!/bin/bash mkdir -p /var/backup/$(date +%d%m%Y) cd $(date +%d%m%Y) mysqldump -u<user_Backup> -p<password_user> <nama_db_1> | gzip | openssl enc -aes-256-cbc -k <secret_password> > /var/backup/$(date +%d%m%Y)/<nama_db_1>-$(date +%d%m%Y).xb.enc mysqldump -u<user_Backup> -p<password_user> <nama_db_2> | gzip | openssl enc -aes-256-cbc -k <secret_password> > /var/backup/$(date +%d%m%Y)/<nama_db_2>-$(date +%d%m%Y).xb.enc
Apa saja yang dilakukan oleh perintah di atas?
- Pertama, ketika script ini dieksekusi, maka ia akan membuat sebuah direktori dengan format tanggal pada direktori /var/backup
- Setelah direktori berhasil dibuat, maka script ini akan masuk ke dalam direktori tersebut.
- Setelah masuk, dengan perintah mysqldump yang disertai dengan user dan password untuk melakukan backup, maka database yang dituju akan langsung di-dump dan keluar dalam bentuk gz. Setelah hadir dalam format gz, file gz tersebut akan dienkripsi kembali menggunakan AES-256 dan akan menghasilkan format file berekstensi .xb.enc.
- AES-256 merupakan metode enkripsi menggunakan kunci yang sama (symmetric Encryption). Panjang kuncinya sendiri 256 bits dan cukup kuat menghadapi upaya brute force.
- Yang perlu diingat dan dicatat adalah secret password yang digunakan untuk mengenkripsi menggunakan AES-256 ini, sebab secret password ini jugalah yang diperlukan untuk membuka file enkripsi ini.

contoh hasil mysqldump yang terenkripsi pada tanggal 26102021
- Untuk membuatnya dieksekusi secara rutin setiap pukul 01.00 WIB, maka kalian harus menambahkan perintahnya ke dalam crontab. Pengaturan crontab-nya kurang lebih seperti ini:
crontab -e 0 1 * * * /bin/bash /var/backup/<nama_file_backup>.sh
- Silakan dipantau selama 2-3 hari kedepan apakah file backup database MariaDB yang sudah dibuat ke dalam bash script tereksekusi dengan baik atau tidak.
Decrypt
Jika proses backup yang terenkripsi sudah berhasil, sekarang adalah waktunya untuk proses dekripsinya. Nggak lucu dong kalau ternyata bisa dienkripsi tapi nggak bisa didekripsi atau hasil dekripsinya gagal? Untuk mendkripsi hasil backup tersebut, jalankan perintah:
openssl aes-256-cbc -d -in <nama_db>.xb.enc -out <nama_db>.sql.gz -k <secret_password>
contoh:
openssl aes-256-cbc -d -in database_testing-27102021.xb.enc -out database_testing-27102021.sql.gz -k <secret_password>

Itu baru proses mendekripsi dari file terenkripsi menjaid file .gz. Untuk membuka file gunzipnya dan melihat isi sql-nya, kalian hanya perlu menjalankan perintah:
gunzip <nama_file>.sql.gz
Contoh:
gunzip database_testing-27102021.sql.gz

*****
Itu tadi sedikit sharing soal bagaimana cara mengotomatisasi backup database MariaDB yang terenkripsi secara harian. Semoga informasinya bisa berguna ya
