Cara Recovery MariaDB Galera Cluster

Apakah Anda pernah tidak sengaja mematikan seluruh node dalam MariaDB Galera Cluster?

Apakah kemudian Anda bingung karena service MariaDB tidak bisa dijalankan kembali?

Bila iya, maka kita bernasib sama.

Ya, beberapa waktu lalu saya tidak sengaja mematikan seluruh node dalam MariaDB Galera Cluster yang saya buat. Saya sudah mencari beberapa referensi di internet, namun seringkali cara yang disampaikan dalam artikel tidak berhasil ketika saya coba.

Setelah melalui proses Googling yang cukup panjang, akhirnya saya menemukan cara yang tepat. Berikut adalah langkah-langkah yang perlu kita lakukan bila tidak sengaja mematikan seluruh node dalam MariaDB Galera Cluster.

It’s OK to PANIC

Karena cara yang saya sampaikan ini belum tentu berhasil ketika anda coba. Cara ini berhasil bila node dalam klaster tersebut mati karena server mengalami shutdown atau karena service mariadb dimatikan, misal menggunakan perintah systemctl stop mariadb, dan bukan karena mengalami crash. Saya belum pernah melakukan recovery MariaDB Galera Cluster akibat crash, sehingga saya tidak yakin cara yang saya sampaikan ini akan berhasil bila digunakan pada kasus tersebut.

Mencari Node yang Paling Up To Date (Terakhir Mati)

Langkah pertama adalah mencari node mana dalam MariaDB Galera Cluster yang paling up to date atau dengan kata lain node yang paling terakhir mati. Cara mengetahuinya adalah dengan membaca isi file grastate.dat. Bila Anda tidak tahu lokasi file tersebut, silahkan cari menggunakan perintah:

$ sudo find / -name grastate.dat

Pada server yang saya gunakan, file tersebut ada pada direktori /var/lib/mysql/grastate.dat. Bukalah isi file tersebut, misalnya dengan perintah:

$ cat /var/lib/mysql/grastate.dat

Isi file tersebut kurang lebih seperti ini:

# GALERA saved state
version: 2.1
uuid: 9873b1fb-43de-11e9–9647–4b5c0da3a195
seqno: -1
safe_to_bootstrap: 1

Yang perlu kita perhatikan adalah baris safe_to_bootstrap. Carilah node yang baris safe_to_bootstrap bernilai 1. Nilai 1 pada parameter tersebut menandakan kita dapat melakukan bootstrap dari node tersebut.

Bila tidak ada satupun node yang nilai baris safe_to_bootstrap bernilai 1, maka jangan melanjutkan ke langkah berikutnya dalam artikel ini. Karena cara selanjutnya tidak akan berhasil dilakukan pada kasus anda dan berpotensi menyebabkan MariaDB Galera Cluster anda menjadi corrupt. Silahkan mencari lagi referensi-referensi lain di internet. Bila menemukan cara yang tepat maka saya akan senang bisa anda juga membagikannya.

Melakukan Bootstrap

Jalankan perintah bootstrap berikut ini dari node dengan baris safe_to_bootstrap yang bernilai 1.

$ sudo galera_new_cluster

Restart MariaDB pada Node Lain

Setelah melakukan bootstrap pada node dengan baris safe_to_bootstrap yang bernilai 1, maka langkah selanjutnya adalah me-restart service MariaDB pada node lain. Misalnya dengan perintah

$ sudo systemctl restart mariadb

Selesai, sekarang MariaDB Galera Cluster Anda telah aktif kembali. Untuk memastikan, anda dapat menjalankan perintah

$ mysql -u root -p -e "show status like 'wsrep_local_state_comment'"

Bila output perintah tersebut adalah Synced seperti ini

+---------------------------+--------+
| Variable_name             | Value  |
+---------------------------+--------+
| wsrep_local_state_comment | Synced |
+---------------------------+--------+

berarti seluruh node dalam MariaDB Galera Cluster Anda telah sinkron.

Disclaimer

Cara ini tidak dijamin akan berhasil bila Anda sudah mengutak-atik server anda, misalnya dengan:

  1. memodifikasi konfigurasi MariaDB,
  2. menjalankan perintah galera_new_cluster atau galera_recovery di sembarang node, atau
  3. tindakan lain yang memodifikasi data dalam MariaDB Galera Cluster.

Source : https://medium.com/@dataq/cara-recovery-mariadb-galera-cluster-efe16cb589b5

Posted on: April 11, 2022, by :  | 19 views