Kenapa Hal Ini Terjadi?

Dari pengalaman, ini terjadi karena service mongo terlalu sering mati. Service mati biasa terjadi karena high memory/CPU usage (ini bakal saya bahas lain waktu).

Cara Mengatasi

Daripada menunggu lama (saya nunggu 2 hari statusnya masih tetap recovering), lebih baik kita coba perbaiki

  1. Login ke mongo yang bermasalah lalu matikan service mongodb db.shutdownServer() atau sudo service mongod stop

  2. Backup data lama, default nya ada di /var/lib/mongo, apabila masih mempunyai disk space kosong gunakan mv /var/lib/mongo /var/lib/mongo.bak. Kalau ga ada space, bisa langsung hapus tapi resiko tanggung sendiri ya. Jangan lupa juga backup key replica-set

  3. Buat lagi folder /var/lib/mongo mkdir /var/lib/mongo. Ganti owner ke user dan group mongod, chown -R mongod:mongod /var/lib/mongo

  4. Ada dua satu cara agar kita bisa re-sync kembali mongodb yang bermasalah ini

    a. Restart kembali service mongo sudo service mongod restart, maka mongodb server akan re-sync kembali dari awal

    b. Copy file /var/lib/mongo dari primary ke mongodb server yang bermasalah, disarankan copy menggunakan rsync. Contoh rsync -avrz /var/lib/mongo username@192.168.1.69:/var/lib/mongo. Setelah selesai rsync lakukan sudo service mongod restart.

    Cara kedua ga bisa dilakukan, karena data di replica set lain akan terus berubah

    Proses Sync Sedang Berlangsung

    Proses Sync Sedang Berlangsung

Setelah beberapa saat, mongodb bermasalah tersebut status nya akan berubah menjadi STARTUP2 , tinggal di tunggu saja sampai re-sync selesai

Referensi:

MongoDB Docs - Resync a Member of a Replica Set


Jika kamu merasa tulisan ini bermanfaat & membantu kamu, kamu bisa berdonasi lewat saweria

If you feel this website help you, you can donate at saweria