Создание второго (клонированного) 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 ответа
Чтобы преобразовать автономный набор во второй набор реплик, не влияя на исходный набор реплик, необходимо следовать указаниям по настройке обычного набора реплик с учетом следующего:
- Используйте другое имя replSet для нового набора
- Используйте другой dbpath для любых новых членов набора
- Используйте другой лог-путь для любых новых членов набора
- Настройте новых участников с разными портами
Если учесть все вышеперечисленное, то ваши 2 набора будут отличаться друг от друга, и между ними не будет попыток связаться друг с другом. Пожалуйста, также тщательно выполняйте операции rs.add(), указав порты нового участника, а не старые.
Это очень странный способ обновления набора реплик. Обычный метод называется "скользящее обновление" и работает так:
- Выключить вторичный
- Обновите пакеты MongoDB
- Следуйте инструкциям для запуска в первый раз, если есть какие-либо
- Повторите шаги 1 - 4 для всех оставшихся вторичных
- Подключиться к основному
- Позвольте ему уйти в отставку, используя
rs.stepDown(3600)
- Повторите шаги 1 - 4
Обновление выполнено, с минимальным временем простоя (на самом деле, всего около 2 секунд для выборов после отставки основного), без копирования сюда.