Миграция кластера MongoDB
Важно
Этот документ не применим для пользователей Yandex Cloud в регионе Казахстан. См. полный перечень поддерживаемых эндпоинтов в Data Transfer.
Чтобы перенести вашу базу данных MongoDB в сервис Yandex StoreDoc (Managed Service for MongoDB), нужно непосредственно перенести данные, закрыть старую базу данных на запись и переключить нагрузку на кластер БД в Yandex Cloud.
Миграция с помощью Data Transfer позволяет:
- перенести базу без остановки обслуживания пользователей;
- мигрировать со старых версий MongoDB на более новые;
- обойтись без создания промежуточной виртуальной машины или разрешения доступа к вашему кластеру-приемнику Yandex StoreDoc из интернета.
Подробнее см. в разделе Какие задачи решает сервис Yandex Data Transfer.
Чтобы использовать этот способ миграции, разрешите подключение к кластеру-источнику из интернета.
Необходимые платные ресурсы
В стоимость поддержки описываемого решения входят:
- Плата за кластер Yandex StoreDoc: использование вычислительных ресурсов, выделенных хостам, и дискового пространства (см. тарифы Yandex StoreDoc (Managed Service for MongoDB)).
- Плата за использование публичных IP-адресов, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
- Плата за трансфер: использование вычислительных ресурсов и количество переданных строк данных (см. тарифы Data Transfer).
Перед началом работы
Создайте кластер-приемник Yandex StoreDoc (Managed Service for MongoDB), вычислительная мощность и размер хранилища которого соответствуют среде, в которой развернута мигрируемая база данных.
Имя базы в кластере-приемнике должно совпадать с именем базы-источника.
Перенос данных
-
Создайте эндпоинт для источника со следующими параметрами:
-
Тип базы данных —
MongoDB. -
Параметры эндпоинта → Настройки подключения —
Пользовательская инсталляция.Укажите параметры подключения к кластеру-источнику.
Примечание
Так как сервис не поддерживает перенос коллекций
Time Series, необходимо исключить такие коллекции в настройках эндпоинта. -
-
Создайте эндпоинт для приемника со следующими параметрами:
-
Тип базы данных —
MongoDB. -
Параметры эндпоинта → Настройки подключения —
Кластер Yandex StoreDoc.Укажите идентификатор кластера-приемника.
-
-
Создайте трансфер типа Копирование и репликация, использующий созданные эндпоинты.
Чтобы ускорить копирование больших коллекций (более 1 ГБ), включите параллельное копирование в настройках трансфера. Укажите два воркера или больше. Коллекция разделится на указанное количество частей, которые будут копироваться параллельно.
Чтобы параллельное копирование работало, тип данных поля
_idу всех документов коллекции должен быть одинаковым. Если трансфер обнаруживает неоднородность типов, то коллекция не разбивается на части и переносится в одном потоке. При необходимости перед началом трансфера удалите из коллекции документы с отличающимися типами данных.Примечание
Если после активации трансфера в коллекцию добавится документ с отличающимся типом данных, трансфер перенесет его на стадии репликации, после параллельного копирования. Но при повторной активации трансфер не сможет разбить коллекцию на части, так как требование к типу поля
_idво всех документах коллекции не будет выполнено. -
Дождитесь перехода трансфера в статус Реплицируется.
-
Переведите кластер-источник в режим
только чтение
и переключите нагрузку на кластер-приемник. -
На странице мониторинга трансфера дождитесь снижения до нуля характеристики Maximum data transfer delay. Это значит, что на кластер-приемник перенесены все изменения, произошедшие в кластере-источнике после завершения копирования данных.
-
Деактивируйте трансфер и дождитесь его перехода в статус Остановлен.
Подробнее о статусах трансфера см. в разделе Жизненный цикл трансфера.
-
Удалите эндпоинты для источника и приемника.
См. также
Другие способы миграции описаны в документации Yandex StoreDoc (Managed Service for MongoDB).