MariaDB Galera Cluster : Corruption in the InnoDB tablespace

MariaDB Galera Cluster : Corruption in the InnoDB tablespace

Ini kejadian udah sering banget tapi masih banyak yang nanya recovery node yang rusak pada cluster gimana ? klo kenanya di master node gimana ?… itulah latar belakang saya nulis artikel ini dan saya akan jelaskan tahapan untuk recovery node tersebut

  1. Gambar diatas merupakan basic architecture untuk kita bisa pahami bahwa galera bersifat aktif – aktif dan saling mereplikasi data.
  2. Disini kita asumsikan node pertama yang paling kiri yang juga merupakan master node dalam keadaan crash, service mysql / mariadb dan ga bisa naik servicenya, untuk 2 node lainnya tetap aktif
  3. Dari kondisi diatas kita tau, ada 1 node rusak (crash) dan ada 2 node yang sehat
  4. Tahap selanjutnya stop semua node mariadb / mysql
    systemctl stop mariadb
  5. setelah semua node mati yang perlu kita pastikan adalah file /var/lib/mysql/grastate.dat di dalam file tersebut yang kita perlu perhatikan adalah seqno pada setiap node. node yang seqno nya paling tinggi, dari seqno tersebut kita bisa memiilih node tersebut untuk menjadi master node baru dan kita set menjadi safe_to_bootstrap menjadi 1
  6. INGAT node rusak tidak boleh di safe_to_bootstrap
  7. lakukan mv atau backup /var/lib/mysql node yang rusak dengan perintah
    #cp -a /var/lib/mysql /var/lib/mysql.bad.$(date +%s)
    atau
    #mv /var/lib/mysql /var/lib/mysql.bad.$(date +%s)
  8. jika sudah selesai di backup mari kita delete folder mysql di node yang rusak dan buat kembali folder tersebut dan pastikan ownership dan group nya adalah mysql
    #rm -rf /var/lib/mysql
    #mkdir /var/lib/mysql
    #chown mysql:mysql /var/lib/mysql
  9. setelah selesai mari kita nyalakan master node yang baru dengan perintah galera_new_cluster
  10. lanjut dengan node kedua yang sehat systemctl start mariadb
  11. lanjut lagi dengan node yang ketiga atau node yang rusak tadi dengan perintah yang sama systemctl start mariadb pada proses ini biasanya akan sangat lama ada yang 10 menit 20 menit 1 jam bahkan lebih dari 1 jam, ini di karenakan node rusak ini akan menerima data dari node donor dari master node dan node kedua
  12. Tunggu sampai selesai.. klo selesai alhamdulillah tapi biasanya anda akan kaget ketika proses tiba – tiba exit dan keluar seperti ini
    #systemctl start mariadb
    Job for mariadb.service failed because a fatal signal was delivered to the control process. See "systemctl status mariadb.service" and "journalctl -xe" for details.
  13. padaha tahapan ini cukup check systemctl status mariadb.service dan lihat statusnya klo activating ini tinggal nunggu aja sampai status menjadi active ini biasanya dikarenakan rsync selesai, dan galera perlu mempersiapkan galera.cache,grastate.dat, mysql.ibd, redo log, dan validasi InnoDB lainnya
  14. jika sudah selesai pasti statusnya akan menjadi active namun klo failed maka check kembali di log, paling simple cek di journalctl -xe apa penyebabnya

semoga artikel ini bermanfaat untuk mengguna mysql dan mariadb yang menggunakan gelera cluster yang mengalami kesulitan dalam recovery node yang crash

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *