Rumah > Soal Jawab > teks badan
假设有这样一个场景,有一个MongoDB的副本集,由于故障导致只剩下两个节点可用,而这两个节点目前都是slave
节点。其他的故障节点也无法再重新启动,即无法重新加入到副本集中。
Q:这种情况下是否因为这个副本集就无法使用了?
PHP中文网2017-04-24 09:13:00
Apabila kebanyakan nod tidak berfungsi dan bilangan baki nod yang boleh disambungkan antara satu sama lain tidak melebihi separuh, anda boleh merujuk kepada dokumentasi untuk mengkonfigurasi semula set replika:
- http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/
Dua kaedah disebut dalam dokumen:
迷茫2017-04-24 09:13:00
Ini bergantung pada jumlah bilangan nod dalam set replika anda Apabila bilangan nod yang boleh disambungkan antara satu sama lain dalam set replika adalah lebih daripada separuh daripada jumlah nod, nod primer baharu boleh dipilih. , dan set replika boleh berfungsi seperti biasa Jika ia boleh Jika bilangan nod yang saling berkaitan kurang daripada atau sama dengan separuh daripada titik ringkasan, semua nod akan menjadi nod kedua Pada masa ini, set replika akan menjadi baca sahaja semua operasi tulis akan gagal
Sebab fenomena ini ialah set replika mongodb tidak membenarkan berbilang nod primer Apabila bilangan nod yang boleh dihubungi adalah kurang daripada atau sama dengan separuh daripada jumlah bilangan nod, jika nod primer masih boleh. dipilih, berbilang nod utama mungkin muncul, menyebabkan kekacauan data dalam keseluruhan set replika, dan semua nod menjadi sekunder
Jika nod biasa tidak mencukupi untuk memilih nod utama, terdapat beberapa cara untuk menyelesaikan masalah.
1) 若其他节点因数据损坏不能启动,像你说的依然有两个节点存活,可以停止一个节点,将硬盘数据导出至挂掉的节点,启动即可.
2) 若其他节点因不可恢复原因导致不能启动,你可以去掉replset选项将此节点作为单机服务启动,若要恢复为副本集模式,可以试一下将一个正常节点的local相关的数据文件删除,重新以replset启动,初始化自身之后使用rs.add()添加新节点,线上没有遇到过这种情况,如果实在没办法,你可以试一下.