Если у вас есть набор реплик с 2 узлами, когда один из узлов выходит из строя, другой превращается в вторичный. Если вы не подключаетесь с slaveOk
true, вы не сможете читать (и в любом случае вы не сможете писать).
Это мера безопасности, введенная MongoDB, которая требует, чтобы большинство (то есть половина плюс один) набора реплик были в состоянии видеть друг друга, чтобы гарантировать, что первичный выбор может быть безопасно выбран. Если большинство не может быть замечено, узлы в меньшинстве не могут знать, выбрала ли «другая половина» основной. Наличие двух основных цветов одновременно было бы очень плохо, так как это может привести к конфликтным обновлениям.
В ситуациях, когда вы хотите запустить только два узла, вы также можете запустить арбитр, чтобы разорвать связи в случае, если один узел выйдет из строя или станет невидимым для набора реплик. Арбитр - это обычный mongod
процесс, но он не хранит никаких данных - по сути, он участвует только в выборах и в противном случае бездействует. В наборе реплик с 2 «нормальными» узлами и одним арбитром любой из двух узлов хранения данных может выйти из строя без потери большинства.
Подробнее см. документацию MongoDB по наборам реплик и документацию по артикулам .