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:
- memodifikasi konfigurasi MariaDB,
- menjalankan perintah
galera_new_cluster
ataugalera_recovery
di sembarang node, atau - 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 : Julian's | 66 views