Pengalaman Menghadapi Masalah pada MariaDB Galera Cluster setelah Stress Test

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:

  1. Coba Restart Manual
    Saya pertama-tama mencoba merestart MariaDB menggunakan perintah sudo systemctl restart mariadb, namun perintah ini gagal. Tidak ada penjelasan yang cukup jelas mengenai kesalahan yang terjadi.
  2. Menggunakan galera_new_cluster
    Setelah itu, saya mencoba menjalankan perintah galera_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.
  3. 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:

  1. 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.
  2. 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 bernama safe_to_bootstrap. Pada kondisi awal, nilai safe_to_bootstrap adalah 0, yang berarti cluster belum aman untuk bootstrap.
  3. Mengedit File grastate.dat
    Saya mengedit file grastate.dat dan mengubah nilai safe_to_bootstrap dari 0 menjadi 1 agar cluster dapat di-boot.
  4. Menjalankan galera_new_cluster
    Setelah file diubah, saya menjalankan perintah berikut untuk melakukan bootstrap pada node pertama:sudo galera_new_cluster
  5. Menghidupkan Node Lainnya
    Setelah node pertama berhasil aktif, saya menyalakan node-node lainnya satu per satu agar mereka bergabung kembali ke dalam cluster.
  6. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Leave a Reply