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
-
Login ke mongo yang bermasalah lalu matikan service mongodb
db.shutdownServer()
atausudo service mongod stop
-
Backup data lama, default nya ada di
/var/lib/mongo
, apabila masih mempunyai disk space kosong gunakanmv /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 -
Buat lagi folder
/var/lib/mongo
mkdir /var/lib/mongo
. Ganti owner ke user dan groupmongod
,chown -R mongod:mongod /var/lib/mongo
-
Ada
duasatu cara agar kita bisa re-sync kembali mongodb yang bermasalah inia. Restart kembali service mongo
sudo service mongod restart
, maka mongodb server akan re-sync kembali dari awalb.
Copy file /var/lib/mongo dari primary ke mongodb server yang bermasalah, disarankan copy menggunakan.rsync
. Contohrsync -avrz /var/lib/mongo username@192.168.1.69:/var/lib/mongo
. Setelah selesairsync
lakukansudo service mongod restart
Cara kedua ga bisa dilakukan, karena data di replica set lain akan terus berubah
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