Миграция данных в Managed Service for MongoDB
Чтобы перенести вашу базу данных в сервис Managed Service for MongoDB, нужно непосредственно перенести данные, закрыть старую базу данных на запись и перенести нагрузку на кластер БД в Yandex.Cloud.
Перенести данные в кластер Managed Service for MongoDB можно с помощью утилит mongodump
и mongorestore
: создайте дамп рабочей базы и восстановите его в нужном кластере.
Перед тем, как переносить данные, проверьте, совпадают ли версии СУБД у существующей базы данных и вашего кластера в Yandex.Cloud. Если версии разные, восстановить сделанный дамп не получится.
Последовательность действий:
- Создайте дамп переносимой базы с помощью утилиты
mongodump
. - При необходимости создайте виртуальную машину в Compute Cloud, чтобы восстанавливать базу из дампа в инфраструктуре Yandex.Cloud.
- Создайте кластер Managed Service for MongoDB, на котором будет развернута восстановленная база.
- Восстановите данные из дампа в кластере с помощью утилиты
mongorestore
.
Создайте дамп
Создать дамп базы данных следует с помощью утилиты mongodump
. Подробно утилита описана в документации MongoDB.
-
Установите
mongodump
и дополнительные утилиты для работы с MongoDB. Пример для дистрибутивов Ubuntu и Debian:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 ... echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list ... sudo apt-get update ... sudo apt-get install mongodb-org-shell mongodb-org-tools
Инструкции для других платформ, а также более подробную информацию об установке утилит можно найти на странице Install MongoDB.
-
Перед созданием дампа рекомендуется переключить СУБД в режим «только чтение», чтобы не потерять данные, которые могут появиться за время создания дампа.
-
Создайте дамп базы данных:
mongodump --host <адрес сервера СУБД> --port <порт> --username <имя пользователя> --password "<пароль>" --db <имя базы данных> --out ~/db_dump
Если вы можете использовать несколько ядер процессора для создания дампа, задайте флаг
-j
с количеством доступных ядер:mongodump --host <адрес сервера СУБД> --port <порт> --username <имя пользователя> --password "<пароль>" -j <количество ядер> --db <имя базы данных> --out ~/db_dump
-
Архивируйте дамп:
tar -cvzf db_dump.tar.gz ~/db_dump
(опционально) Создайте виртуальную машину для загрузки дампа
Промежуточная виртуальная машина в Yandex Compute Cloud понадобится, если:
- К вашему кластеру Managed Service for MongoDB нет доступа из интернета.
- Ваше оборудование или соединение с кластером в Yandex.Cloud недостаточно надежны.
Чтобы подготовить виртуальную машину для восстановления дампа:
-
В консоли управления создайте новую виртуальную машину из образа Ubuntu 18.04. Нужное количество оперативной памяти и ядер процессора зависит от объема переносимых данных и требуемой скорости переноса.
Минимальной конфигурации (1 ядро, 2 ГБ RAM, 10 ГБ дискового пространства) должно хватить для переноса базы до 1 ГБ. Чем больше переносимая база, тем больше должно быть дискового пространства (как минимум в два раза больше, чем размер базы) и оперативной памяти.
Виртуальная машина должна находиться в той же сети и зоне доступности, что хост-мастер кластера Managed Service for MongoDB. Кроме того, виртуальной машине должен быть присвоен внешний IP-адрес, чтобы вы могли загрузить файл дампа извне Yandex.Cloud.
-
Установите клиент MongoDB и дополнительные утилиты для работы с СУБД:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 ... echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list ... sudo apt-get update ... sudo apt-get install mongodb-org-shell mongodb-org-tools
-
Перенесите дамп базы данных с вашего сервера на виртуальную машину, например, используя утилиту
scp
:scp ~/db_dump.tar.gz <имя пользователя ВМ>@<публичный адрес ВМ>:/tmp/db_dump.tar.gz
-
Распакуйте дамп на виртуальной машине:
tar -xzf /tmp/db_dump.tar.gz
В результате вы должны получить виртуальную машину с дампом базы данных, который готов к восстановлению на кластер Managed Service for MongoDB.
Создайте кластер Managed Service for MongoDB
Создайте кластер, вычислительная мощность и размер хранилища которого соответствуют среде, в которой развернута существующая база данных. Подробно о создании кластера Managed Service for MongoDB — на странице Создание MongoDB-кластера.
Восстановите данные
Восстанавливать базу данных из дампа следует с помощью утилиты mongorestore.
-
Если вы восстанавливаете дамп с виртуальной машины в Yandex.Cloud:
$ mongorestore --host <адрес сервера СУБД> \ --port <порт> \ --username <имя пользователя> \ --password "<пароль>" \ -j <количество потоков> \ --authenticationDatabase <имя базы данных> \ --nsInclude '*.*' /tmp/db_dump
-
Если вы восстанавливаете дамп с сервера вне Yandex.Cloud, для
mongorestore
необходимо явно задать параметры SSL:$ mongorestore --host <адрес сервера СУБД> \ --port <порт> \ --ssl \ --sslCAFile <путь к файлу сертификата> \ --username <имя пользователя> \ --password "<пароль>" \ -j <количество потоков> \ --authenticationDatabase <имя базы данных> \ --nsInclude '*.*' ~/db_dump
-
Если нужно перенести только определенные коллекции, то задайте флаги
--nsInclude
и--nsExclude
с указанием на пространства имен, которые нужно или не нужно включать для восстанавливаемого набора коллекций.