Как настроить удаленные элементы набора реплик для формирования нового набора реплик?
У меня есть набор реплик с 4 экземплярами Mongod
Вывод rs.config ()
{
"_id" : "rs0",
"members" : [
{
"_id" : 0,
"host" : "localhost:27031"
},
{
"_id" : 1,
"host" : "localhost:27032"
},
{
"_id" : 2,
"host" : "localhost:27033"
},
{
"_id" : 3,
"host" : "localhost:27034"
}
],
"settings" : {
"replicaSetId" : ObjectId("5cf22332f5b9d21b01b9b6b2")
}
}
Я удалил 2 экземпляра из набора реплик
rs.remove("localhost:27033")
rs.remove("localhost:27034")
Теперь мое требование - сформировать новый набор реплик с этими двумя удаленными членами. Каков наилучший способ для этого?
Мое текущее решение
подключиться к удаленному участнику
mongo --port 27033
и выполнить
conf = {
"_id" : "rs0",
"members" : [
{
"_id" : 2,
"host" : "localhost:27033"
},
{
"_id" : 3,
"host" : "localhost:27034"
}
],
"settings" : {
"replicaSetId" : ObjectId("5cf22332f5b9d21b01b9b6b2")
}
}
, а затем
rs.reconfig(conf, {force:true})
Результат
Это решение работало нормально практически.
Удаленные члены сформировали репликационный набор, один из которых стал первичным, а другой стал вторичным. Данные были воспроизведены среди них.
И этот набор реплик кажется изолированным от начального набора реплик, из которого они были удалены.
Беспокойство
1) Мне пришлось использовать принудительная реконфигурация . Не уверен насчет последствий.
"errmsg" : "replSetReconfig should only be run on PRIMARY, but my state is REMOVED; use the \"force\" argument to override",
2) Новый набор реплик на самом деле новый? В rs.config ()
replicaSetId совпадает со старым.
"replicaSetId": ObjectId ("5cf22332f5b9d21b01b9b6b2")
Мне пришлось использовать то же значение для _id членов, что и в конфигурации старого набора реплик
"errmsg": "Новая и старая конфигурации имеют членов с hosthost localhost: 27034, но в новой конфигурации поле _id равно 1, а в старой конфигурации это 3 для набора реплик rs0",
Это решение хорошо?
Есть ли лучшее решение?
Примечание : мне нужно сохранить данные из старого набора реплик (данные, которые присутствовали на момент удаления) в новом наборе реплик.