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

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

  • Получить список хостов в кластере
  • Добавить хост
  • Изменить хост
  • Удалить хост
  • Запустить ресинхронизацию хоста
  • Перезагрузить хост
  1. Пошаговые инструкции
  2. Кластеры
  3. Управление хостами кластера

Управление хостами кластера MongoDB

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Получить список хостов в кластере
  • Добавить хост
  • Изменить хост
  • Удалить хост
  • Запустить ресинхронизацию хоста
  • Перезагрузить хост

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

Получить список хостов в кластереПолучить список хостов в кластере

Консоль управления
CLI
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
  2. Нажмите на имя нужного кластера Managed Service for MongoDB.
  3. Выберите вкладку Хосты.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы получить список хостов в кластере Managed Service for MongoDB, выполните команду:

yc managed-mongodb host list \
  --cluster-name <имя_кластера>

Результат:

+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
|           NAME             |      CLUSTER ID      |  TYPE  | SHARD NAME |     ROLE     |  HEALTH  |    ZONE ID    | PUBLIC IP |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+
| rc1b...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01       | PRIMARY      | ALIVE    | ru-central1-b | false     |
| rc1a...mdb.yandexcloud.net | c9qp71dk1q1w******** | MONGOD | rs01       | SECONDARY    | ALIVE    | ru-central1-a | false     |
+----------------------------+----------------------+--------+------------+--------------+----------+---------------+-----------+

Имя кластера Managed Service for MongoDB можно запросить со списком кластеров в каталоге.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.ListHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request GET \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/hosts'
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.ListHosts и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>"
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.ListHosts
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Добавить хостДобавить хост

Количество хостов в кластерах Managed Service for MongoDB ограничено квотами на количество CPU и объем памяти, которые доступны кластерам базы данных в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты и найдите блок Managed Service for MongoDB.

Вы можете добавлять в кластер Managed Service for MongoDB хосты разных типов. Их количество зависит от типа шардирования:

Тип шардирования MONGOD MONGOINFRA MONGOS MONGOCFG
Без шардирования ⩾ 1 — — —
Стандартный ⩾ 1 ⩾ 3 — —
Расширенный ⩾ 1 — ⩾ 2 ⩾ 3
Консоль управления
CLI
Terraform
REST API
gRPC API

Чтобы добавить хост в кластере Managed Service for MongoDB:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
  2. Нажмите на имя нужного кластера Managed Service for MongoDB и перейдите на вкладку Хосты.
  3. Нажмите кнопку Создать хост.
  4. Укажите параметры хоста:
    • Зону доступности.
    • Подсеть (если нужной подсети в списке нет, создайте ее).
    • Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
    • Тип хоста и название шарда, если в кластере Managed Service for MongoDB включено шардирование.
  5. Нажмите Сохранить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы добавить хост в кластере Managed Service for MongoDB:

  1. Запросите список подсетей кластера Managed Service for MongoDB, чтобы выбрать подсеть для нового хоста:

    yc vpc subnet list
    

    Результат:

    +----------------------+-----------+-----------------------+---------------+------------------+
    |          ID          |   NAME    |       NETWORK ID      |       ZONE    |      RANGE       |
    +----------------------+-----------+-----------------------+---------------+------------------+
    | b0cl69a2b4c6******** | default-d | enp6rq72rndgr******** | ru-central1-d | [172.16.0.0/20]  |
    | e2lkj9qwe762******** | default-b | enp6rq72rndgr******** | ru-central1-b | [10.10.0.0/16]   |
    | e9b0ph42bn96******** | a-2       | enp6rq72rndgr******** | ru-central1-a | [172.16.32.0/20] |
    | e9b9v22r88io******** | default-a | enp6rq72rndgr******** | ru-central1-a | [172.16.16.0/20] |
    +----------------------+-----------+-----------------------+---------------+------------------+
    

    Если нужной подсети в списке нет, создайте ее.

  2. Посмотрите описание команды CLI для добавления хостов:

    yc managed-mongodb host add --help
    
  3. Выполните команду добавления хоста:

    yc managed-mongodb host add \
      --cluster-name <имя_кластера> \
      --host zone-id=<зона_доступности>,`
            `subnet-id=<идентификатор_подсети>,`
            `assign-public-ip=<публичный_доступ>,`
            `hidden=<скрытие_хоста>,`
            `secondary-delay-secs=<отставание_реплики_в_секундах>,`
            `priority=<приоритет_хоста>
    

    Где:

    • --cluster-name — имя кластера. Его можно запросить со списком кластеров в каталоге.
    • --host — параметры хоста:
      • zone-id — зона доступности.
      • subnet-id — идентификатор подсети. Его необходимо указать, если в зоне доступности больше одной подсети, в противном случае Managed Service for MongoDB автоматически выберет единственную подсеть.
      • assign-public-ip — доступность хоста из интернета по публичному IP-адресу: true или false.
      • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
      • secondary-delay-secs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
      • priority — приоритет назначения хоста мастером.

    Managed Service for MongoDB запустит операцию добавления хоста.

Чтобы добавить хост в кластере Managed Service for MongoDB:

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Добавьте к описанию кластера Managed Service for MongoDB:

    • Ресурсы, соответствующие типу шардирования, если вы добавляете хост в шардированный кластер:
      • resources_mongoinfra — для стандартного шардирования.
      • resources_mongos и resources_mongocfg — для расширенного шардирования.
    • Блок host.
    resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
      ...
      resources_mongod {
        resource_preset_id = "<класс_хоста>"
        disk_type_id       = "<тип_диска>"
        disk_size          = <размер_хранилища_ГБ>
      }
    
      resources_mongoinfra { # Добавьте для стандартного шардирования.
        resource_preset_id = "<класс_хоста>"
        disk_type_id       = "<тип_диска>"
        disk_size          = <размер_хранилища_ГБ>
      }
    
      resources_mongos { # Добавьте для расширенного шардирования.
        resource_preset_id = "<класс_хоста>"
        disk_type_id       = "<тип_диска>"
        disk_size          = <размер_хранилища_ГБ>
      }
    
      resources_mongocfg { # Добавьте для расширенного шардирования.
        resource_preset_id = "<класс_хоста>"
        disk_type_id       = "<тип_диска>"
        disk_size          = <размер_хранилища_ГБ>
      }
    
      host {
        role             = "<тип_реплики>"
        zone_id          = "<зона_доступности>"
        subnet_id        = "<идентификатор_подсети>"
        assign_public_ip = <публичный_доступ>
        shard_name       = "<имя_шарда>"
        type             = "<тип_хоста>"
        host_parameters {
          hidden               = <скрытие_хоста>
          secondary_delay_secs = <отставание_реплики_в_секундах>
          priority             = <приоритет_хоста>
        }
        ...
      }
    }
    

    Где:

    • host — параметры хоста:
      • role — тип реплики: PRIMARY или SECONDARY.
      • zone_id — зона доступности.
      • subnet_id — идентификатор подсети в выбранной зоне доступности.
      • assign_public_ip — публичный доступ к хосту: true или false.
      • shard_name — имя шарда в шардированном кластере.
      • type — тип хоста в шардированном кластере: MONGOD, MONGOINFRA, MONGOS или MONGOCFG.
      • host_parameters — дополнительные параметры хоста:
        • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
        • secondary_delay_secs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
        • priority — приоритет назначения хоста мастером.
  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:

  • создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
  • изменение — 60 минут.

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

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.AddHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/hosts:batchCreate' \
        --data '{
                  "hostSpecs": [
                    {
                      "zoneId": "<зона_доступности>",
                      "subnetId": "<идентификатор_подсети>",
                      "assignPublicIp": <публичный_доступ_к_хосту>,
                      "type": "<тип_хоста>",
                      "shardName": "<имя_шарда>",
                      "hidden": <скрытие_хоста>,
                      "secondaryDelaySecs": "<отставание_реплики_в_секундах>",
                      "priority": "<приоритет_хоста>",
                      "tags": "<метки_хоста>"
                    }
                  ]
                }'
    

    Где hostSpecs — параметры хоста:

    • zoneId — зона доступности.
    • subnetId — идентификатор подсети.
    • assignPublicIp — доступность хоста из интернета по публичному IP-адресу: true или false.
    • type— тип хоста в шардированном кластере: MONGOD, MONGOINFRA, MONGOS или MONGOCFG. Если кластер нешардированный, укажите MONGOD.
    • shardName — имя шарда в шардированном кластере.
    • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
    • secondaryDelaySecs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
    • priority — * hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
    • secondaryDelaySecs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
    • priority — приоритет назначения хоста мастером.
    • tags— метки хоста.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.AddHosts и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "host_specs": [
                {
                  "zone_id": "<зона_доступности>",
                  "subnet_id": "<идентификатор_подсети>",
                  "assign_public_ip": <публичный_доступ_к_хосту>,
                  "type": "<тип_хоста>",
                  "shard_name": "<имя_шарда>",
                  "hidden": <скрытие_хоста>,
                  "secondary_delay_secs": "<отставание_реплики_в_секундах>",
                  "priority": "<приоритет_хоста>",
                  "tags": "<метки_хоста>"
                }
              ]
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.AddHosts
    

    Где host_specs — параметры хоста:

    • zone_id — зона доступности.
    • subnet_id — идентификатор подсети.
    • assign_public_ip — доступность хоста из интернета по публичному IP-адресу: true или false.
    • type— тип хоста в шардированном кластере: MONGOD, MONGOINFRA, MONGOS или MONGOCFG. Если кластер нешардированный, укажите MONGOD.
    • shard_name — имя шарда в шардированном кластере.
    • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
    • secondaryDelaySecs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
    • priority — приоритет назначения хоста мастером.
    • tags— метки хоста.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Важно

Если после добавления хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера Managed Service for MongoDB настроена корректно для подсети, в которую помещен хост.

Изменить хостИзменить хост

CLI
Terraform
REST API
gRPC API

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

yc managed-mongodb host update \
  --cluster-name <имя_кластера> \
  --host hostname=<имя_хоста>,`
        `assign-public-ip=<публичный_доступ_к_хосту>,`
        `hidden=<скрытие_хоста>,`
        `secondary-delay-secs=<отставание_реплики_в_секундах>,`
        `priority=<приоритет_хоста>

Где:

  • --cluster-name — имя кластера. Его можно запросить со списком кластеров в каталоге.
  • --host — параметры хоста:
    • hostname — имя изменяемого хоста. Его можно запросить со списком хостов в кластере.
    • assign-public-ip — доступность хоста из интернета по публичному IP-адресу: true или false.
    • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
    • secondary-delay-secs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
    • priority — приоритет назначения хоста мастером.

Чтобы изменить параметры хоста в кластере:

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    Как создать такой файл, см. в разделе Создание кластера.

    Полный список доступных для изменения полей конфигурации кластера Managed Service for PostgreSQL см. в документации провайдера Terraform.

  2. Измените в описании кластера Managed Service for PostgreSQL атрибуты блока host, соответствующего изменяемому хосту.

    resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
      ...
      host {
        assign_public_ip = <публичный_доступ_к_хосту>
        host_parameters {
          hidden               = <скрытие_хоста>
          secondary_delay_secs = <отставание_реплики_в_секундах>
          priority             = <приоритет_хоста>
        }
      }
    }
    

Где:

  • assign_public_ip — доступность хоста из интернета по публичному IP-адресу: true или false.
  • host_parameters — дополнительные параметры хоста:
    • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
    • secondary_delay_secs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
    • priority — приоритет назначения хоста мастером.
  1. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  2. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    Ограничения по времени

    Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:

    • создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
    • изменение — 60 минут.

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

    Как изменить эти ограничения?

    Добавьте к описанию кластера блок timeouts, например:

    resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
      ...
      timeouts {
        create = "1h30m" # Полтора часа
        update = "2h"    # 2 часа
      }
    }
    
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.updateHosts и выполните запрос, например, с помощью cURL:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask (одной строкой через запятую).

    curl \
      --request POST \
      --header "Authorization: Bearer $IAM_TOKEN" \
      --header "Content-Type: application/json" \
      --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \
      --data '{
                "updateHostSpecs": [
                  {
                    "updateMask": "hostName,assignPublicIp,hidden,secondaryDelaySecs,priority",
                    "hostName": "<имя_хоста>",
                    "assignPublicIp": <публичный_доступ_к_хосту>,
                    "hidden": <скрытие_хоста>,
                    "secondaryDelaySecs": "<отставание_реплики_в_секундах>",
                    "priority": "<приоритет_хоста>"
                  }
                ]
              }'
    

    Где updateHostSpecs — параметры хоста:

    • updateMask — перечень изменяемых параметров в одну строку через запятую.
    • hostName — имя изменяемого хоста. Его можно запросить со списком хостов в кластере.
    • assignPublicIp — доступность хоста из интернета по публичному IP-адресу: true или false.
    • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
    • secondaryDelaySecs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
    • priority — приоритет назначения хоста мастером.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService/UpdateHosts и выполните запрос, например, с помощью gRPCurl:

    Важно

    Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре update_mask (в виде массива строк paths[]).

    Формат перечисления настроек
    "update_mask": {
        "paths": [
            "<настройка_1>",
            "<настройка_2>",
            ...
            "<настройка_N>"
        ]
    }
    
    grpcurl \
      -format json \
      -import-path ~/cloudapi/ \
      -import-path ~/cloudapi/third_party/googleapis/ \
      -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
      -rpc-header "Authorization: Bearer $IAM_TOKEN" \
      -d '{
            "cluster_id": "<идентификатор_кластера>",
            "update_host_specs": [
              {
                "update_mask": {
                    "paths": [
                      "assign_public_ip",
                      "hidden",
                      "secondary_delay_secs",
                      "priority"
                    ]
                },
                "host_name": "<имя_хоста>",
                "assign_public_ip": <публичный_доступ_к_хосту>,
                "hidden": <скрытие_хоста>,
                "secondary_delay_secs": "<отставание_реплики_в_секундах>",
                "priority": "<приоритет_хоста>"
              }
            ]
          }' \
      mdb.api.cloud.yandex.net:443 \
      yandex.cloud.mdb.mongodb.v1.ClusterService.UpdateHosts
    

    Где update_host_specs — параметры хоста:

    • update_mask — перечень изменяемых параметров в одну строку через запятую.
    • host_name — имя изменяемого хоста. Его можно запросить со списком хостов в кластере.
    • assign_public_ip — доступность хоста из интернета по публичному IP-адресу: true или false.
    • hidden — скрытие хоста: true или false. Если хост скрыт, он будет доступен для чтения только для прямых подключений (например, чтобы делать с него резервные копии, не добавляя нагрузки на кластер).
    • secondary_delay_secs — отставание реплики от мастера в секундах. Может быть полезно для восстановления данных в случае ошибочных операций.
    • priority — приоритет назначения хоста мастером.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Удалить хостУдалить хост

Вы можете удалить хост MONGOD из кластера Managed Service for MongoDB, если он не является единственным хостом. Чтобы заменить единственный хост, сначала создайте новый хост, а затем удалите старый.

Если хост является первичным в момент удаления, Managed Service for MongoDB автоматически выберет новую первичную реплику.

Также в кластере Managed Service for MongoDB с включенным шардированием допустимо удалить хосты MONGOS, MONGOCFG или MONGOINFRA, если их в кластере больше, чем минимальное количество, которое требуется для обеспечения работы шардирования.

Консоль управления
CLI
Terraform
REST API
gRPC API

Чтобы удалить хост из кластера Managed Service for MongoDB:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
  2. Нажмите на имя нужного кластера Managed Service for MongoDB и выберите вкладку Хосты.
  3. Нажмите значок в строке нужного хоста и выберите пункт Удалить.
  4. В открывшемся окне отметьте опцию Я удаляю хост и нажмите кнопку Подтвердить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы удалить хост из кластера Managed Service for MongoDB, выполните команду:

yc managed-mongodb host delete <имя_хоста>
     --cluster-name <имя_кластера>

Имя хоста можно запросить со списком хостов в кластере Managed Service for MongoDB, имя кластера — со списком кластеров в каталоге.

Чтобы удалить хост из кластера Managed Service for MongoDB:

  1. Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.

    О том, как создать такой файл, см. в разделе Создание кластера.

  2. Удалите из описания кластера Managed Service for MongoDB блок host, соответствующий удаляемому хосту.

  3. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

    2. Выполните команду:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Введите слово yes и нажмите Enter.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

Ограничения по времени

Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:

  • создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
  • изменение — 60 минут.

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

Как изменить эти ограничения?

Добавьте к описанию кластера блок timeouts, например:

resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
  ...
  timeouts {
    create = "1h30m" # Полтора часа
    update = "2h"    # 2 часа
  }
}
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.DeleteHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>/hosts:batchDelete' \
        --data '{
                  "hostNames": [
                    "<имя_хоста>"
                  ]
                }'
    

    Где hostNames — массив с именами удаляемых хостов. Чтобы узнать имя нужного хоста, получите список хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.DeleteHosts и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "host_names": [
                "<имя_хоста>"
              ]
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.DeleteHosts
    

    Где host_names — массив с именами удаляемых хостов. Чтобы узнать имя нужного хоста, получите список хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Запустить ресинхронизацию хостаЗапустить ресинхронизацию хоста

Чтобы повторно синхронизировать хост с остальными репликами в кластере или шарде Managed Service for MongoDB, выполните операцию принудительной синхронизации. Операция применяется только к одному хосту MONGOD за раз и только для кластеров Managed Service for MongoDB с более чем двумя репликами, независимо от класса и типа хостов. Ресинхронизация также позволяет освободить хранилище хоста от коллекций и документов, которые помечены как удаленные.

При выполнении этой операции:

  1. Хост перестает принимать запросы на запись. Если хост был первичной репликой (PRIMARY), Managed Service for MongoDB попытается сделать его вторичной репликой (SECONDARY). В случае неудачи операция прерывается.

  2. Инстанс MongoDB на хосте останавливается, и все данные удаляются.

  3. Инстанс MongoDB снова запускается и заново скачивает данные с хостов-реплик.

  4. После синхронизации с другими репликами в кластере Managed Service for MongoDB хост становится вторичной репликой.

    Примечание

    • Во время синхронизации хост не сможет полноценно отвечать на запросы, так как на нем будет находиться только часть данных кластера Managed Service for MongoDB.
    • Оценочная скорость синхронизации: от 300 ГБ в сутки.
Консоль управления
CLI
REST API
gRPC API

Чтобы запустить принудительную ресинхронизацию хоста:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
  2. Нажмите на имя нужного кластера Managed Service for MongoDB и выберите вкладку Хосты.
  3. Нажмите значок в строке нужного хоста и выберите пункт Ресинхронизировать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

yc managed-mongodb hosts resetup <имя_хоста>
   --cluster-name <имя_кластера>

Имя хоста можно запросить со списком хостов в каталоге. Имя кластера Managed Service for MongoDB можно запросить со списком кластеров в каталоге.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.ResetupHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>:resetupHosts' \
        --data '{
                  "hostNames": [
                    "<имя_хоста>"
                  ]
                }'
    

    Где hostNames — массив с именами хостов, которые будут синхронизированы повторно. Чтобы узнать имя нужного хоста, получите список хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.ResetupHosts и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "host_names": [
                "<имя_хоста>"
              ]
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.ResetupHosts
    

    Где host_names — массив с именами хостов, которые будут синхронизированы повторно. Чтобы узнать имя нужного хоста, получите список хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

Перезагрузить хостПерезагрузить хост

Вы можете вручную перезагрузить хост кластера Managed Service for MongoDB.

Перезагрузка может привести к временной недоступности кластера или шарда Managed Service for MongoDB:

  • Если в кластере только один хост.
  • Если хост является первичной репликой.

При перезагрузке первичной реплики не происходит ее автоматического переключения. Чтобы избежать недоступности кластера Managed Service for MongoDB, переключите первичную реплику кластера до ее перезагрузки.

Примечание

Вы можете перезагрузить только один хост за раз.

Консоль управления
CLI
REST API
gRPC API

Чтобы перезагрузить хост:

  1. Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
  2. Нажмите на имя нужного кластера Managed Service for MongoDB и выберите вкладку Хосты.
  3. Нажмите значок в строке нужного хоста и выберите пункт Перезагрузить.
  4. Подтвердите перезагрузку хоста.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

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

yc managed-mongodb hosts restart <имя_хоста> \
  --cluster-name <имя_кластера>
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.RestartHosts и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>:restartHosts' \
        --data '{
                  "hostNames": [
                    "<имя_хоста>"
                  ]
                }'
    

    Где hostNames — массив с именами хостов, которые будут перезапущены. Чтобы узнать имя нужного хоста, получите список хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.RestartHosts и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/mongodb/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "host_names": [
                "<имя_хоста>"
              ]
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.RestartHosts
    

    Где host_names — массив с именами хостов, который будут перезапущены. Чтобы узнать имя нужного хоста, получите список хостов в кластере.

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

Предыдущая
Остановка и запуск кластера
Следующая
Миграция хостов в другую зону доступности
Проект Яндекса
© 2025 ООО «Яндекс.Облако»