Резервное копирование и восстановление папки данных MongoDB между разными версиями Mongo

Немного предыстории: мы создаем и поставляем наше приложение Mongo, которое клиенты могут затем установить в своем местоположении или в облаке по своему выбору.

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

Я нашел несколько потоков, в которых говорится, что если это сработает, то это будет просто удачей, хотя есть способы восстановления, например, вращение старой версии и обновление mongo и перенос папки данных с новой версией (но это будет сложный процесс)

Есть ли способ гарантировать безупречный процесс? Как mongo сам может обнаружить старые данные и обновить или поставить какие-то флаги совместимости?


person DevC    schedule 02.08.2018    source источник
comment
Не уверен, что полностью понимаю, чего вы пытаетесь достичь. Но вы это видели? docs.mongodb.com/manual/tutorial/upgrade-revision Также почему mongodump и -restore не подходят? С какими проблемами вы столкнулись? Будет ли вариант Ops Manager? docs.opsmanager.mongodb.com/current   -  person dnickless    schedule 06.08.2018
comment
@DevC извините за ответ, но задаю вопрос ... Вы восстанавливали mongo db из папки данных, если я правильно вас понял? Не могли бы вы дать мне какой-нибудь указатель на то, как вы это сделали, потому что я нахожусь в такой же ситуации, как и вы, еще не уверен насчет версий :) заранее спасибо   -  person caniaskyouaquestion    schedule 08.01.2020


Ответы (2)


Я начну с предположения, поскольку вы заявили, что недавно обновили, и теперь используете MongoDB версии 3.6 (или 4.0?).

Это здорово, но эта версия несовместима с 3.4 без настроек некоторых флагов администратора. Здесь подробно описаны изменения совместимости.

Теперь, что делается в этом случае, вам нужно будет установить это, чтобы база данных была снова совместима с 3.4:

db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } )

Это заставит его работать с предыдущими версиями, но за счет отказа от функций 3.6.

Вы можете увидеть, с чем featureCompatibilityVersion вы заняты:

`db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )`

Если это поможет и вы закончили с желаемыми изменениями, вы можете восстановить совместимость 3.6, выполнив ту же команду setFeatureCompatibilityVersion на этот раз со значением 3.6. Теперь это проверено и хорошо работает с 3,4–3,6 и наоборот. Если ваша версия ниже, все равно стоит попробовать :).

Из документации о том, что это будет делать, когда будет сделано на 3.6:

Если установлено в развертываниях MongoDB 3.6, отключает функции 3.6, которые сохраняют данные, несовместимые с MongoDB 3.4.

В заключение я предполагаю, что мы говорим о 3,6–3,4, но это все равно верно для 4,0–3,6 и т. Д. Вам все равно придется попробовать это и посмотреть, принесет ли это вам какую-либо пользу. Надеюсь это поможет.

person Akrion    schedule 10.08.2018

Рекомендации:

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

  • Совместимы ли ваши данные при восстановлении файла данных из версии A в версию B путем копирования файлов?
  • Иногда при обновлении используется изменить индекс или настроить версию протокола, которая требует ручной проверки для разрешения конфликтов.
  • Версии совместимости функций: для некоторых новых версий необходимо установить setFeatureCompatibilityVersion отмечает использование функций обратной совместимости, когда вероятность перехода на более раннюю версию минимальна.
  • Требуется ли какой-либо промежуточный выпуск перед обновлением одной версии до другой? Например, для обновления версии mongodb с 2.6 до 3.2 и требуется промежуточное обновление до 3.0
  • db.upgradeCheck (). Этот удобный инструмент помочь вам разобраться в проверках.

Подход:

Учитывая ваш вариант использования, когда ваши пользователи получают контроль над развертыванием mongodb, вы можете:

  • Оцените совместимость данных mongodb, скопировав файлы из одной версии в другую, когда новая версия доступна, поскольку обновления происходят не слишком часто.
  • Оцените, требуются ли какие-либо действия вручную в таких случаях, как обновления индекса
  • Создайте матрицу совместимости, которая поможет вашим пользователям узнать о совместимости данных от одной версии к другой.
  • Кроме того, можно создать документ обновления, чтобы обеспечить беспроблемное восстановление данных, если необходимо установить какие-либо флаги для восстановления данных из одной версии в другую.
person Atish    schedule 11.08.2018