Создание второго (клонированного) MongoDB ReplicaSet на тех же томах хранения

Мы обновляем наше программное обеспечение, которое потребует обновления нашей базы данных MongoDB. Мы планируем сделать это, сделав копию существующего ReplicaSet с новым именем и обновив новое, а затем переключившись, когда все будет готово. Оба эти ReplicaSet будут на тех же серверах.

Я уже создал новую автономную базу данных под ее новым именем (сделал mongodumop из Первичного и затем восстановил ее как автономный под новым именем на том же томе, что и Первичный). Теперь я хочу изменить эту новую базу данных с автономной на ReplicaSet, не влияя на исходный производственный ReplicaSet

Я нашел - преобразовать автономный набор реплик http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

Но в этом примере показан только один ReplicaSet, и я просто хочу убедиться, что процедура будет работать с двумя базами данных на тех же серверах. Имя ReplicaSet, который необходимо преобразовать из автономного режима, является одним из вариантов запуска mongo ( --replSet) в этом примере. Требуется ли для этого варианта как исходные, так и новые имена ReplicaSrt или только новое, которое необходимо преобразовать из автономного

2 ответа

Решение

Чтобы преобразовать автономный набор во второй набор реплик, не влияя на исходный набор реплик, необходимо следовать указаниям по настройке обычного набора реплик с учетом следующего:

  1. Используйте другое имя replSet для нового набора
  2. Используйте другой dbpath для любых новых членов набора
  3. Используйте другой лог-путь для любых новых членов набора
  4. Настройте новых участников с разными портами

Если учесть все вышеперечисленное, то ваши 2 набора будут отличаться друг от друга, и между ними не будет попыток связаться друг с другом. Пожалуйста, также тщательно выполняйте операции rs.add(), указав порты нового участника, а не старые.

Это очень странный способ обновления набора реплик. Обычный метод называется "скользящее обновление" и работает так:

  1. Выключить вторичный
  2. Обновите пакеты MongoDB
  3. Следуйте инструкциям для запуска в первый раз, если есть какие-либо
  4. Повторите шаги 1 - 4 для всех оставшихся вторичных
  5. Подключиться к основному
  6. Позвольте ему уйти в отставку, используя rs.stepDown(3600)
  7. Повторите шаги 1 - 4

Обновление выполнено, с минимальным временем простоя (на самом деле, всего около 2 секунд для выборов после отставки основного), без копирования сюда.

Другие вопросы по тегам