Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Data Transfer
  • Доступные трансферы
  • Начало работы
    • Все инструкции
    • Подготовка к трансферу
      • Управление эндпоинтами
      • Миграция эндпоинтов в другую зону доступности
        • Источник
        • Приемник
    • Управление трансфером
    • Работа с базами данных во время трансфера
    • Мониторинг состояния трансфера
  • Решение проблем
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • Обучающие курсы

В этой статье:

  • Сценарии передачи данных из MongoDB
  • Подготовка базы данных источника
  • Настройка эндпоинта-источника MongoDB
  • Кластер Managed Service for MongoDB
  • Пользовательская инсталляция
  • Фильтр коллекций
  • Настройка приемника данных
  • Действия с базой данных во время трансфера
  • Решение проблем, возникающих при переносе данных
  • Размер ключа коллекции превышает 5 МБ
  • Размер объекта в коллекции превышает 16 МБ
  • Не удалось найти ни одной таблицы
  • Ошибка при трансфере шардированного кластера
  • Ошибка при переносе коллекций timeseries
  • Не распознается IP-адрес или FQDN внешнего кластера
  • Ошибка на стадии копирования данных
  • Данные в источнике не подходят для шардирования
  1. Пошаговые инструкции
  2. Настройка эндпоинтов
  3. MongoDB
  4. Источник

Передача данных из эндпоинта-источника MongoDB

Статья создана
Yandex Cloud
Обновлена 10 апреля 2025 г.
  • Сценарии передачи данных из MongoDB
  • Подготовка базы данных источника
  • Настройка эндпоинта-источника MongoDB
    • Кластер Managed Service for MongoDB
    • Пользовательская инсталляция
    • Фильтр коллекций
  • Настройка приемника данных
  • Действия с базой данных во время трансфера
  • Решение проблем, возникающих при переносе данных
    • Размер ключа коллекции превышает 5 МБ
    • Размер объекта в коллекции превышает 16 МБ
    • Не удалось найти ни одной таблицы
    • Ошибка при трансфере шардированного кластера
    • Ошибка при переносе коллекций timeseries
    • Не распознается IP-адрес или FQDN внешнего кластера
    • Ошибка на стадии копирования данных
    • Данные в источнике не подходят для шардирования

С помощью сервиса Yandex Data Transfer вы можете переносить данные из базы MongoDB и реализовывать различные сценарии переноса, обработки и трансформации данных. Для реализации трансфера:

  1. Ознакомьтесь с возможными сценариями передачи данных.
  2. Подготовьте базу данных MongoDB к трансферу.
  3. Настройте эндпоинт-источник в Yandex Data Transfer.
  4. Настройте один из поддерживаемых приемников данных.
  5. Создайте и запустите трансфер.
  6. Выполняйте необходимые действия по работе с базой и контролируйте трансфер.
  7. При возникновении проблем, воспользуйтесь готовыми решениями по их устранению.

Сценарии передачи данных из MongoDBСценарии передачи данных из MongoDB

  1. Миграция — перенос данных из одного хранилища в другое. Часто это перенос базы из устаревших локальных баз в управляемые облачные.

    • Миграция кластера MongoDB;
    • Миграция кластера MongoDB с версии 4.4 на 6.0.
  2. Загрузка данных в масштабируемое хранилище Object Storage позволяет удешевить хранение и облегчает обмен данных с контрагентами.

Подробное описание возможных сценариев передачи данных в Yandex Data Transfer см. в разделе Практические руководства.

Подготовка базы данных источникаПодготовка базы данных источника

Managed Service for MongoDB
MongoDB
  1. Оцените общее количество баз данных для трансфера и общую нагрузку на Managed Service for MongoDB. Если нагрузка на базы выше 10 000 операций на запись в секунду, создайте несколько эндпоинтов и трансферов. Подробнее см. в разделе Передача данных из эндпоинта-источника MongoDB.

  2. Создайте пользователя с ролью readWrite на каждую базу в источнике, которая будет реплицироваться. Роль readWrite нужна для того, чтобы у трансфера было право записи в служебную коллекцию __data_transfer.__dt_cluster_time.

  1. Оцените общее количество баз данных для трансфера и общую нагрузку на MongoDB. Если нагрузка на базы выше 10 000 операций на запись в секунду, создайте несколько эндпоинтов и трансферов. Подробнее см. в разделе Передача данных из эндпоинта-источника MongoDB.

  2. Если вы не планируете использовать для подключения к внешнему кластеру сервис Cloud Interconnect или VPN, разрешите подключения к такому кластеру из интернета с IP-адресов, используемых сервисом Data Transfer.

    Подробнее о настройке сети для работы с внешними ресурсами см. в концепции.

  3. Убедитесь, что версия MongoDB на приемнике не ниже 4.0.

  4. Убедитесь, что кластер MongoDB сконфигурирован таким образом, чтобы на запросы к нему он возвращал корректно разрешающиеся IP-адреса или FQDN (Fully Qualified Domain Name).

  5. Настройте доступ к кластеру-источнику из Yandex Cloud. Чтобы настроить кластер-источник для подключения из интернета:

    1. Измените в конфигурационном файле значение настройки net.bindIp со 127.0.0.1 на 0.0.0.0:

      # network interfaces
      net:
        port: 27017
        bindIp: 0.0.0.0
      
    2. Перезапустите сервис mongod:

      sudo systemctl restart mongod.service
      
  6. Если кластер-источник не использует репликацию, включите ее:

    1. Добавьте в конфигурационный файл /etc/mongod.conf настройки репликации:

      replication:
        replSetName: <имя_набора_реплик>
      
    2. Перезапустите сервис mongod:

      sudo systemctl restart mongod.service
      
    3. Подключитесь к MongoDB и инициализируйте набор реплик командой:

      rs.initiate({
          _id: "<имя_набора_реплик>",
          members: [{
              _id: 0,
              host: "<IP-адрес_который_слушает_MongoDB>:<порт>"
          }]
      });
      
  7. Создайте пользователя с ролью readWrite на все базы в источнике, которые будут реплицироваться:

    use admin
    db.createUser({
        user: "<имя_пользователя>",
        pwd: "<пароль>",
        mechanisms: ["SCRAM-SHA-1"],
        roles: [
            {
                db: "<имя_базы-источника_1>",
                role: "readWrite"
            },
            {
                db: "<имя_базы-источника_2>",
                role: "readWrite"
            },
            ...
        ]
    });
    

    После старта трансфер подключится к источнику от имени этого пользователя. Роль readWrite нужна для того, чтобы у трансфера было право записи в служебную коллекцию __data_transfer.__dt_cluster_time.

    Примечание

    Для версий MongoDB, начиная с 3.6, достаточно выдать созданному пользователю роль read на реплицируемые базы.

  8. При использовании MongoDB, начиная с версии 3.6, для работы трансфера необходимо, чтобы пользователь обладал правами на чтение коллекции local.oplog.rs, а также на запись с чтением коллекции __data_transfer.__dt_cluster_time. Чтобы назначить пользователю роль clusterAdmin, предоставляющую такие права, подключитесь к MongoDB и выполните команды:

    use admin;
    db.grantRolesToUser("<имя_пользователя>", ["clusterAdmin"]);
    

    Для выдачи более гранулярных прав можно назначить роль clusterMonitor, необходимую для чтения коллекции local.oplog.rs, а также дать доступ на чтение и запись системной коллекции __data_transfer.__dt_cluster_time.

Настройка эндпоинта-источника MongoDBНастройка эндпоинта-источника MongoDB

Data Transfer поддерживает трансферы с MongoDB, начиная с версии 3.6.

При создании или изменении эндпоинта вы можете задать:

  • Настройки подключения к кластеру Yandex Managed Service for MongoDB или пользовательской инсталляции, в т. ч. на базе виртуальных машин Yandex Compute Cloud. Эти параметры обязательные.
  • Дополнительные параметры.

Кластер Managed Service for MongoDBКластер Managed Service for MongoDB

Важно

Для создания или редактирования эндпоинта управляемой базы данных вам потребуется роль managed-mongodb.viewer или примитивная роль viewer, выданная на каталог кластера этой управляемой базы данных.

Подключение к БД с указанием идентификатора кластера в Yandex Cloud.

Консоль управления
CLI
Terraform
API
  • Кластер Managed Service for MongoDB — укажите идентификатор кластера, к которому необходимо подключиться.

  • Источник аутентификации — укажите имя базы данных в кластере.

  • Пользователь — укажите имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • Пароль — укажите пароль пользователя для доступа к базе данных.

  • Группы безопасности — выберите облачную сеть для размещения эндпоинта и группы безопасности для сетевого трафика.

    Это позволит применить к ВМ и кластерам в выбранной сети указанные правила групп безопасности без изменения настроек этих ВМ и кластеров. Подробнее см. в разделе Сеть в Yandex Data Transfer.

  • Тип эндпоинта — mongo-source.
  • --cluster-id — идентификатор кластера, к которому необходимо подключиться.

  • --database — имя базы данных.

  • --user — имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • --security-group — группы безопасности для сетевого трафика, правила которых применятся к ВМ и кластерам без изменения их настроек. Подробнее см. в разделе Сеть в Yandex Data Transfer.

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

    • --raw-password — пароль в текстовом виде.

    • --password-file — путь к файлу с паролем.

  • Тип эндпоинта — mongo_source.
  • connection.connection_options.mdb_cluster_id — идентификатор кластера, к которому необходимо подключиться.

  • subnet_id — идентификатор подсети, в которой находится кластер. Трансфер будет использовать эту подсеть для доступа к кластеру. Если идентификатор не указан, то кластер должен быть доступен из интернета.

    Если значение в этом поле задано для обоих эндпоинтов, то обе подсети должны быть размещены в одной зоне доступности.

  • security_groups — группы безопасности для сетевого трафика.

    Правила групп безопасности применяются к трансферу. Они позволяют открыть сетевой доступ с ВМ трансфера к кластеру. Подробнее см. в разделе Сеть в Yandex Data Transfer.

    Группы безопасности и подсеть subnet_id, если она указана, должны принадлежать той же сети, в которой размещен кластер.

    Примечание

    В Terraform сеть для групп безопасности задавать не нужно.

  • auth_source — имя базы данных в кластере.

  • connection.connection_options.user — имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • connection.connection_options.password.raw — пароль в текстовом виде.

Пример структуры конфигурационного файла:

resource "yandex_datatransfer_endpoint" "<имя_эндпоинта_в_Terraform>" {
  name = "<имя_эндпоинта>"
  settings {
    mongo_source {
      security_groups = ["<список_идентификаторов_групп_безопасности>"]
      subnet_id       = "<идентификатор_подсети>"
      connection {
        connection_options {
          mdb_cluster_id = "<идентификатор_кластера>"
          auth_source    = "<имя_базы_данных>"
          user           = "<имя_пользователя>"
          password {
            raw = "<пароль_пользователя>"
          }
        }
      }
      <дополнительные_настройки_эндпоинта>
    }
  }
}

Подробнее см. в документации провайдера Terraform.

  • securityGroups — группы безопасности для сетевого трафика, правила которых применятся к ВМ и кластерам без изменения их настроек. Подробнее см. в разделе Сеть в Yandex Data Transfer.

  • mdbClusterId — идентификатор кластера, к которому необходимо подключиться.

  • database — имя базы данных.

  • user — имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • password.raw — пароль пользователя для доступа к базе данных (в текстовом виде).

Пользовательская инсталляцияПользовательская инсталляция

Настройки приведены для случая OnPremise, когда все поля заполняются вручную.

Консоль управления
CLI
Terraform
API
  • Хосты — укажите IP-адреса или FQDN хостов, к которым необходимо подключиться.

  • Набор реплик — укажите имя набора реплик.

  • Порт — укажите номер порта, который сервис Data Transfer будет использовать для подключения.

  • Сертификат CA — для шифрования передаваемых данных загрузите файл PEM-сертификата или добавьте его содержимое в текстовом виде.

    Важно

    Если не добавить сертификат, трансфер может завершиться ошибкой.

  • Идентификатор подсети — выберите или создайте подсеть в нужной зоне доступности. Трансфер будет использовать эту подсеть для доступа к кластеру.

    Если значение в этом поле задано для обоих эндпоинтов, то обе подсети должны быть размещены в одной зоне доступности.

  • Источник аутентификации — укажите имя базы данных в кластере.

  • Пользователь — укажите имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • Пароль — укажите пароль пользователя для доступа к базе данных.

  • Группы безопасности — выберите облачную сеть для размещения эндпоинта и группы безопасности для сетевого трафика.

    Это позволит применить к ВМ и кластерам в выбранной сети указанные правила групп безопасности без изменения настроек этих ВМ и кластеров. Подробнее см. в разделе Сеть в Yandex Data Transfer.

  • Тип эндпоинта — mongo-source.
  • --host — IP-адрес или FQDN хоста-мастера, к которому необходимо подключиться.

  • --port — номер порта, который сервис Data Transfer будет использовать для подключения.

  • --ca-certificate — сертификат CA, если требуется шифрование передаваемых данных, например для соответствия требованиям PCI DSS.

    Важно

    Если не добавить сертификат, трансфер может завершиться ошибкой.

  • --subnet-id — идентификатор подсети, в которой находится хост. Трансфер будет использовать эту подсеть для доступа к хосту.

  • --database — имя базы данных.

  • --user — имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • --security-group — группы безопасности для сетевого трафика, правила которых применятся к ВМ и кластерам без изменения их настроек. Подробнее см. в разделе Сеть в Yandex Data Transfer.

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

    • --raw-password — пароль в текстовом виде.

    • --password-file — путь к файлу с паролем.

  • Тип эндпоинта — mongo_source.
  • on_premise.port — номер порта, который сервис Data Transfer будет использовать для подключения.

  • connection.connection_options.on_premise.tls_mode.enabled.ca_certificate — сертификат CA, если требуется шифрование передаваемых данных, например, для соответствия требованиям PCI DSS.

    Важно

    Если не добавить сертификат, трансфер может завершиться ошибкой.

  • subnet_id — идентификатор подсети, в которой находится кластер. Трансфер будет использовать эту подсеть для доступа к кластеру. Если идентификатор не указан, то кластер должен быть доступен из интернета.

    Если значение в этом поле задано для обоих эндпоинтов, то обе подсети должны быть размещены в одной зоне доступности.

  • security_groups — группы безопасности для сетевого трафика.

    Правила групп безопасности применяются к трансферу. Они позволяют открыть сетевой доступ с ВМ трансфера к ВМ c базой данных. Подробнее см. в разделе Сеть в Yandex Data Transfer.

    Группы безопасности должны принадлежать той же сети, что и подсеть subnet_id, если она указана.

    Примечание

    В Terraform сеть для групп безопасности задавать не нужно.

  • connection.connection_options.on_premise.replica_set — укажите имя набора реплик.

  • connection.connection_options.on_premise.hosts — укажите IP-адреса или FQDN хостов, к которым необходимо подключиться.

  • auth_source — имя базы данных в кластере.

  • connection.connection_options.user — имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • connection.connection_options.password.raw — пароль в текстовом виде.

Пример структуры конфигурационного файла:

resource "yandex_datatransfer_endpoint" "<имя_эндпоинта_в_Terraform>" {
  name = "<имя_эндпоинта>"
  settings {
    mongo_source {
      security_groups = ["<список_идентификаторов_групп_безопасности>"]
      subnet_id       = "<идентификатор_подсети>"
      connection {
        connection_options {
          on_premise {
            hosts       = [ "список хостов набора реплик" ]
            port        = "<порт_для_подключения>"
            replica_set = "<имя_набора_реплик>"
            tls_mode {
              enabled {
                ca_certificate = "<сертификат_в_формате_PEM>"
              }
            }
          }
          auth_source = "<имя_базы_данных>"
          user        = "<имя_пользователя>"
          password {
            raw = "<пароль_пользователя>"
          }
        }
      }
      <дополнительные_настройки_эндпоинта>
    }
  }
}

Подробнее см. в документации провайдера Terraform.

  • onPremise — параметры подключения к базе данных:
    • hosts — IP-адрес или FQDN хоста-мастера, к которому необходимо подключиться.

    • port — номер порта, который сервис Data Transfer будет использовать для подключения.

    • tlsMode — параметры шифрования передаваемых данных, если оно требуется, например для соответствия требованиям PCI DSS.

      • disabled — отключено.
      • enabled — включено
        • caCertificate — сертификат CA.

          Важно

          Если не добавить сертификат, трансфер может завершиться ошибкой.

    • subnetId — идентификатор подсети, в которой находится хост. Трансфер будет использовать эту подсеть для доступа к хосту.

  • securityGroups — группы безопасности для сетевого трафика, правила которых применятся к ВМ и кластерам без изменения их настроек. Подробнее см. в разделе Сеть в Yandex Data Transfer.

  • database — имя базы данных.

  • user — имя пользователя, под которым сервис Data Transfer будет подключаться к базе данных.

  • password.raw — пароль пользователя для доступа к базе данных (в текстовом виде).

Фильтр коллекцийФильтр коллекций

Консоль управления
CLI
Terraform
API
  • Список включённых коллекций — будут передаваться данные только из перечисленных коллекций. По умолчанию передаются все коллекции.

    Добавление новых коллекций при редактировании эндпоинта, использующегося в трансферах типа Копирование и репликация или Репликация в статусе Реплицируется, не приведет к загрузке истории данных по этим коллекциям. Чтобы добавить коллекцию с ее историческими данными, используйте поле Список объектов для переноса в настройках трансфера.

  • Список исключённых коллекций — будут передаваться данные из всех коллекций, кроме указанных.

Имена включенных и исключенных коллекций должны соответствовать правилам именования идентификаторов в MongoDB. Экранирование двойных кавычек не требуется.

  • --include-collection — будут передаваться данные только из перечисленных коллекций. Значения указываются в формате <имя_базы_данных>.<имя_коллекции>. По умолчанию передаются все коллекции.

    Добавление новых коллекций при редактировании эндпоинта, использующегося в трансферах типа Копирование и репликация или Репликация в статусе Реплицируется, не приведет к загрузке истории данных по этим коллекциям. Чтобы добавить коллекцию с ее историческими данными, используйте поле Список объектов для переноса в настройках трансфера.

  • --exclude-collection — будут передаваться данные из всех коллекций, кроме указанных. Значения указываются в формате <имя_базы_данных>.<имя_коллекции>.

  • --prefer-secondary — задайте значение true для этого параметра, чтобы использовать для чтения данных реплики (если они есть в кластере) вместо хоста-мастера.

  • collections — будут передаваться данные только из перечисленных коллекций. По умолчанию передаются все коллекции.

    Добавление новых коллекций при редактировании эндпоинта, использующегося в трансферах типа Копирование и репликация или Репликация в статусе Реплицируется, не приведет к загрузке истории данных по этим коллекциям. Чтобы добавить коллекцию с ее историческими данными, используйте поле Список объектов для переноса в настройках трансфера.

  • excluded_collections — будут передаваться данные из всех коллекций, кроме указанных.

  • secondary_preferred_mode — задайте значение true для этого параметра, чтобы использовать для чтения данных реплики (если они есть в кластере) вместо хоста-мастера.

  • collections — будут передаваться данные только из перечисленных коллекций. Для каждой коллекции указываются:

    • databaseName — имя базы данных.
    • collectionName — имя коллекции.

    По умолчанию передаются все коллекции.

    Добавление новых коллекций при редактировании эндпоинта, использующегося в трансферах типа Копирование и репликация или Репликация в статусе Реплицируется, не приведет к загрузке истории данных по этим коллекциям. Чтобы добавить коллекцию с ее историческими данными, используйте поле Список объектов для переноса в настройках трансфера.

  • excludedCollections — будут передаваться данные из всех коллекций, кроме указанных. Для каждой коллекции указываются:

    • databaseName — имя базы данных.
    • collectionName — имя коллекции.
  • secondaryPreferredMode — задайте значение true для этого параметра, чтобы использовать для чтения данных реплики (если они есть в кластере) вместо хоста-мастера.

Если источник испытывает высокую рабочую нагрузку (более 10000 транзакций на запись в секунду), то рекомендуется задать эти настройки так, чтобы в каждом эндпоинте присутствовало не более десяти различных баз. Это позволит избежать ошибок подключения к базам во время работы трансфера.

Примечание

  • Если вы используете несколько эндпоинтов, то для каждого из них необходимо создать отдельный трансфер.
  • Так как трансферы не поддерживают перенос коллекций timeseries, такие коллекции необходимо исключить.

Настройка приемника данныхНастройка приемника данных

Настройте один из поддерживаемых приемников данных:

  • Yandex Object Storage.
  • MongoDB.

Полный список поддерживаемых источников и приемников в Yandex Data Transfer см. в разделе Доступные трансферы.

После настройки источника и приемника данных создайте и запустите трансфер.

Действия с базой данных во время трансфераДействия с базой данных во время трансфера

  • Для трансферов в статусе Копируется запрещено производить действия, которые сокращают временное окно журнала операций (oplog) на источнике. Не стоит добавлять, удалять шарды или каким-либо образом их переконфигурировать в процессе копирования, а также производить другие действия, приводящие к уменьшению временного окна журнала операций.

  • Для трансферов в статусе Реплицируется можно столкнуться с проблемой дублирования ключа в ситуациях, когда приемником выступает шардированный кластер MongoDB с индексом шардирования, отличным от _id. Во время работы трансфера не рекомендуется создавать на приемнике кластеры с индексами шардирования, отличными от _id.

Решение проблем, возникающих при переносе данныхРешение проблем, возникающих при переносе данных

Известные проблемы, связанные с использованием эндпоинта MongoDB:

  • Размер ключа коллекции превышает 5 МБ
  • Размер объекта в коллекции превышает 16 МБ
  • Не удалось найти ни одной таблицы
  • Ошибка при трансфере шардированного кластера
  • Ошибка при переносе коллекций timeseries
  • Не распознается IP-адрес или FQDN внешнего кластера
  • Ошибка на стадии копирования

См. полный список рекомендаций в разделе Решение проблем.

Размер ключа коллекции превышает 5 МБРазмер ключа коллекции превышает 5 МБ

Текст ошибки:

Warn(replication): Usage of bulk objects in 'database <имя_БД>'
breaks change event log, transfer is stopping.
Reason: (Location<номер_позиции>) Tried to create string longer than 16MB.

Если размер ключа коллекции превышает 5 МБ, трансферы типа Репликация прерываются из-за внутренних ограничений MongoDB на размер пользовательских объектов.

Решение: исключите из трансфера коллекции, превышающие лимиты MongoDB, после чего активируйте трансфер повторно.

Размер объекта в коллекции превышает 16 МБРазмер объекта в коллекции превышает 16 МБ

Текст ошибки:

Warn(replication): Usage of bulk objects in 'collection '<имя_БД>.<имя_коллекции>''
breaks change event log, transfer is stopping.
Reason: (BSONObjectTooLarge) BSONObj size: <размер_объекта> (<размер_объекта_в_hex>) is invalid.
Size muse be between 0 and 16793600(16MB).

Если размер объекта в коллекции превышает 16 МБ, трансферы типа Репликация прерываются из-за внутренних ограничений MongoDB на размер пользовательских объектов.

Решение: исключите из трансфера коллекции, превышающие лимиты MongoDB, после чего активируйте трансфер повторно.

Не удалось найти ни одной таблицыНе удалось найти ни одной таблицы

Текст ошибки:

Unable to find any tables

Из базы данных извлечено пустое число коллекций. Возможно у пользователя нет прав на базу данных, используемую в трансфере.

Решение: выдайте пользователю, от имени которого трансфер подключается к источнику, права readWrite на базу данных для переноса.

Ошибка при трансфере шардированного кластераОшибка при трансфере шардированного кластера

Решение: задайте в параметре трансфера Настройки копирования → Настройки параллельного копирования количество воркеров, равное количеству переносимых коллекций.

Ошибка при переносе коллекций timeseriesОшибка при переносе коллекций timeseries

Тексты ошибок:

Unable to find any tables
Cannot execute mongo activate hook: 
Failed in accordance with configuration: 
some tables from include list are missing in the source database: [<имя_коллекции>]

Сервис не поддерживает перенос коллекций Time Series.

Решение: исключите из трансфера коллекции Time Series, после чего активируйте трансфер повторно.

Не распознается IP-адрес или FQDN внешнего кластераНе распознается IP-адрес или FQDN внешнего кластера

Трансфер завершается с ошибкой:

server selection error: server selection timeout, current topology: { Type: ReplicaSetNoPrimary, Servers: [{ Addr: <неразрешающееся_FQDN>, Type: Unknown, Last error: connection() error occurred during connection handshake: dial tcp: lookup <неразрешающееся_FQDN> on <IP-адрес>: no such host }, ] }"

Ошибка трансфера связана с конфигурацией кластера MongoDB. Например, когда в описании шардов используются внутренние не разрешающиеся имена.

Решение:

Убедитесь, что кластер MongoDB сконфигурирован таким образом, чтобы на запросы к нему он возвращал корректно разрешающиеся IP-адреса или FQDN (Fully Qualified Domain Name).

Ошибка на стадии копирования данныхОшибка на стадии копирования данных

Трансфер типа Копирование и репликация на стадии копирования завершается с ошибкой:

encountered non-recoverable resume token error. Sync cannot be resumed from this state and must be terminated and re-enabled to continue functioning: (ChangeStreamHistoryLost) Resume of change stream was not possible, as the resume point may no longer be in the oplog.

Ошибка ChangeStreamHistoryLost возникает, когда общее время копирования данных кластера-источника MongoDB превышает размер временного окна журнала операций (oplog). Текущий размер временного окна можно проверить в Консоли управления на графике Oplog window страницы мониторинга кластера.

Подробнее об oplog читайте в документации MongoDB.

Решение:

  • Увеличьте размер oplog (по умолчанию 10 % от размера диска кластера). Чтобы увеличить размер oplog в кластере-источнике Managed Service for MongoDB, обратитесь в техническую поддержку. Чтобы изменить размер oplog в случае пользовательской инсталляции источника, см. документацию MongoDB.
  • Включите параллельное копирование данных для ускорения стадии копирования.
  • Ограничьте список объектов для переноса в настройках трансфера.

После этого активируйте трансфер повторно.

Данные в источнике не подходят для шардированияДанные в источнике не подходят для шардирования

Активация трансфера из источника MongoDB завершается с ошибкой:

ERROR: Unable to Activate
error: "failed to execute mongo activate hook: Snapshot loading failed: unable to sharded upload tables: unable to sharded upload(main worker) tables: unable to shard tables for operation id_операции: unable to split table, err: cannot get delimiters: there are two or more types of objects in the sharding index"

Ошибка cannot get delimiters: there are two or more types of objects in the sharding index означает, что на источнике в коллекции в поле id встречаются данные разных типов, и поэтому его нельзя использовать для шардирования.

Решение:

Укажите в настройках трансфера Настройки копирования → Настройки параллельного копирования 1 воркер и 1 поток, чтобы отключить шардирование.

После этого активируйте трансфер повторно.

Была ли статья полезна?

Предыдущая
Источник
Следующая
Приемник
Проект Яндекса
© 2025 ООО «Яндекс.Облако»