Pada tanggal 26 April 2025, saya melakukan stress test pada salah satu aplikasi milik client saya yang terhubung dengan server MariaDB Galera Cluster. Stress test tersebut bertujuan untuk menguji ketahanan sistem di bawah beban tinggi. Setelah tes menggunakan locust selesai, saya mendapati bahwa server database mengalami kesalahan dan beberapa aplikasi menjadi tidak dapat diakses. Dari situ saya mulai melakukan investigasi, dan ternyata database tidak dapat otomatis restart setelah server direboot. Berikut adalah langkah-langkah yang saya lakukan untuk memulihkan keadaan dan solusinya.
Kronologi Kejadian
Setelah stress test selesai pada tanggal 26 April, sistem monitoring yang menggunakan Grafana mengirimkan notifikasi bahwa beberapa aplikasi mengalami downtime. Saya menduga bahwa server database mengalami masalah, dan setelah melakukan pemeriksaan lebih lanjut, saya menemukan bahwa database tidak dapat melakukan restart otomatis. Berikut adalah langkah-langkah yang saya coba:
- Coba Restart Manual
Saya pertama-tama mencoba merestart MariaDB menggunakan perintahsudo systemctl restart mariadb
, namun perintah ini gagal. Tidak ada penjelasan yang cukup jelas mengenai kesalahan yang terjadi. - Menggunakan
galera_new_cluster
Setelah itu, saya mencoba menjalankan perintahgalera_new_cluster
untuk memulai ulang cluster Galera. Namun, hasilnya tetap gagal dengan pesan yang menunjukkan bahwa ada konfigurasi tambahan yang diperlukan agar server Galera dapat berjalan kembali. - Perbaikan Konfigurasi Auto Start
Solusi yang berhasil adalah menambahkan konfigurasi tertentu pada systemd agar MariaDB dapat auto start saat server reboot. Setelah langkah ini diterapkan, database dapat berjalan kembali dan aplikasi yang sebelumnya mengalami downtime kembali dapat diakses.
Langkah-Langkah Memulihkan Cluster MariaDB Galera
Setelah mencoba beberapa langkah, berikut adalah prosedur yang saya lakukan untuk memulihkan cluster MariaDB Galera:
- Menentukan Node Master untuk Bootstrap
Langkah pertama adalah memilih salah satu node untuk menjadi node master yang akan melakukan bootstrap. Dalam hal ini, saya memilih database-cluster1. - Cek File
grastate.dat
Setelah itu, saya memeriksa file/var/lib/mysql/grastate.dat
untuk memastikan status cluster. Di dalam file ini terdapat baris yang bernamasafe_to_bootstrap
. Pada kondisi awal, nilaisafe_to_bootstrap
adalah0
, yang berarti cluster belum aman untuk bootstrap. - Mengedit File
grastate.dat
Saya mengedit filegrastate.dat
dan mengubah nilaisafe_to_bootstrap
dari0
menjadi1
agar cluster dapat di-boot. - Menjalankan
galera_new_cluster
Setelah file diubah, saya menjalankan perintah berikut untuk melakukan bootstrap pada node pertama:sudo galera_new_cluster
- Menghidupkan Node Lainnya
Setelah node pertama berhasil aktif, saya menyalakan node-node lainnya satu per satu agar mereka bergabung kembali ke dalam cluster. - Verifikasi Keberhasilan
Setelah semua node berhasil bergabung, saya memverifikasi keberhasilan recovery cluster dengan menjalankan perintah berikut:mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
Jika hasilnya menunjukkan jumlah node yang aktif sesuai dengan jumlah node yang diinginkan, maka cluster berhasil dipulihkan dan beroperasi kembali dengan normal.
Solusi yang Ditemukan
Dari investigasi yang dilakukan, saya menemukan bahwa masalah yang terjadi adalah konfigurasi auto start pada MariaDB Galera Cluster yang tidak teratur dengan baik. Solusi yang berhasil adalah dengan menambahkan beberapa baris konfigurasi pada unit file MariaDB di systemd, sehingga database dapat berjalan otomatis tanpa perlu intervensi manual setelah server reboot.
Saran Mitigasi ke Depan
Agar kejadian serupa tidak terulang, berikut beberapa langkah mitigasi yang saya sarankan:
- Pastikan Konfigurasi Auto Start MariaDB Sudah Benar
Pastikan MariaDB sudah terkonfigurasi dengan benar untuk auto start pada saat server reboot. Hal ini sangat penting untuk memastikan agar sistem tetap berjalan tanpa intervensi manual. - Monitoring yang Lebih Intensif
Setelah melakukan stress test atau pengujian beban tinggi, pastikan untuk melakukan monitoring secara lebih intensif terhadap database dan aplikasi. Gunakan tools seperti Grafana atau Prometheus untuk mendeteksi masalah lebih awal sebelum semakin parah. - Backup dan Recovery Plan yang Teruji
Pastikan sistem backup dan recovery berjalan dengan baik. Dengan memiliki sistem backup yang teruji, kita dapat dengan cepat memulihkan data dan meminimalkan downtime. - Uji Beban Secara Berkala
Lakukan pengujian beban secara berkala, terutama untuk memastikan ketahanan server dan aplikasi di bawah tekanan. Tes ini tidak hanya perlu dilakukan untuk database, tetapi untuk seluruh layanan dalam sistem. - Dokumentasi yang Rinci
Dokumentasikan setiap konfigurasi sistem, terutama yang berkaitan dengan MariaDB Galera Cluster. Hal ini akan sangat membantu dalam proses troubleshooting dan mengurangi kemungkinan kesalahan di masa depan.
Dari kejadian ini, saya belajar bahwa pengujian beban yang tidak dilakukan dengan pengaturan yang tepat dapat menyebabkan masalah besar pada sistem produksi. Meskipun masalah ini akhirnya dapat diselesaikan dengan memperbaiki konfigurasi auto start MariaDB, langkah-langkah mitigasi yang telah disebutkan di atas dapat membantu mencegah terulangnya kejadian serupa di masa depan.
Bagi para SysAdmin atau Developer, kejadian ini menjadi pengingat penting untuk menjaga kestabilan sistem, terutama setelah melakukan stress test atau pengujian beban lainnya.