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

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

  • Включить шардирование
  • Получить список шардов в кластере
  • Создать шард
  • Удалить шард
  1. Пошаговые инструкции
  2. Шардирование и репликация
  3. Управление шардами

Управление шардами MongoDB

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

Кластер можно создать шардированным либо включить шардирование позже. Затем можно добавлять и настраивать шарды.

Для повышения доступности шарды должны состоять как минимум из трех хостов MONGOD. Небольшие коллекции обычно нет смысла шардировать: скорость обработки запросов будет выше в обычном кластере реплик.

Внимание

После того как шардирование кластера включено:

  • Выключить шардирование невозможно. В кластере всегда будет поддерживаться минимальное количество хостов MONGOS, MONGOCFG или MONGOINFRA в зависимости от типа шардирования.
  • Обращаться к базам данных следует только через хосты MONGOS или MONGOINFRA, которые маршрутизируют запросы к шардам. Измените адреса хостов в коде ваших приложений соответствующим образом.

Включить шардированиеВключить шардирование

Через интерфейс Managed Service for MongoDB вы можете быстро создать инфраструктуру шардирования MongoDB.

О том, как непосредственно шардировать базу и коллекции MongoDB, читайте в разделе Шардирование коллекций.

Для включения шардирования необходимо:

  • Не менее трех хостов MONGOINFRA при стандартном шардировании.
  • Не менее двух хостов MONGOS и не менее трех хостов MONGOCFG при расширенном шардировании.

Примечание

Шардирование не поддерживается для хостов с классами b1.medium и b2.medium. Если у вас нет вкладки Шарды, повысьте класс хостов кластера до поддерживаемого.

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

  2. Нажмите на имя нужного кластера и выберите вкладку Шарды.

  3. Нажмите кнопку Включить.

  4. Выберите один из типов шардирования:

    • Стандартный — с использованием хостов MONGOINFRA.

    • Расширенный — с использованием хостов MONGOS и MONGOCFG.

      Подробнее см. в разделе Шардирование.

    Важно

    После включения шардирования будет невозможно поменять его тип.

  5. Задайте параметры хостов, которые будут обеспечивать доступ к шардированным данным.

  6. Нажмите кнопку Включить шардирование.

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

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

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

  • Чтобы включить стандартное шардирование кластера с использованием хостов MONGOINFRA, выполните команду (в примере приведены не все доступные параметры):

    yc managed-mongodb cluster enable-sharding \
      --cluster-name=<имя_кластера> \
      --host type=mongoinfra,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --host type=mongoinfra,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --host type=mongoinfra,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --mongoinfra resource-preset=<класс_хоста>,`
        `disk-size=<размер_хранилища_ГБ>,`
        `disk-type=<тип_диска>
    

    Где:

    • --cluster-name — имя кластера, которое можно получить со списком кластеров в каталоге.
    • --host — параметры хоста:
      • type — тип (MONGOINFRA).
      • zone-id — зона доступности.
      • subnet-name — имя подсети.
    • --mongoinfra — параметры хостов MONGOINFRA:
      • resource-preset — класс хоста.
      • disk-size — размер хранилища в гигабайтах.
      • disk-type — тип диска.
  • Чтобы включить расширенное шардирование кластера с использованием хостов MONGOS и MONGOCFG, выполните команду (в примере приведены не все доступные параметры):

    yc managed-mongodb cluster enable-sharding \
      --cluster-name=<имя_кластера> \
      --host type=mongos,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --host type=mongos,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --mongos resource-preset=<класс_хоста>,`
        `disk-size=<размер_хранилища_ГБ>,`
        `disk-type=<тип_диска> \
      --host type=mongocfg,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --host type=mongocfg,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --host type=mongocfg,`
        `zone-id=<зона_доступности>,`
        `subnet-name=<имя_подсети> \
      --mongocfg resource-preset=<класс_хоста>,`
        `disk-size=<размер_хранилища_ГБ>,`
        `disk-type=<тип_диска>
    

    Где:

    • --cluster-name — имя кластера, которое можно получить со списком кластеров в каталоге.
    • --host — параметры хоста:
      • type — тип (MONGOS или MONGOCFG).
      • zone-id — зона доступности.
      • subnet-name — имя подсети.
    • --mongos — параметры хостов MONGOS:
      • resource-preset — класс хоста.
      • disk-size — размер хранилища в гигабайтах.
      • disk-type — тип диска.
    • --mongocfg — параметры хостов MONGOCFG:
      • resource-preset — класс хоста.
      • disk-size — размер хранилища в гигабайтах.
      • disk-type — тип диска.
  1. Убедитесь, что установленная версия провайдера — 0.90 или выше:

    terraform version
    

    Пример результата:

    Terraform v1.4.6
    on darwin_arm64
    + provider registry.terraform.io/yandex-cloud/yandex v0.91.0
    
    Если версия ниже

    Обновите версию провайдера:

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

    2. В этом же каталоге инициализируйте провайдера с новой версией, указанного в конфигурационном файле:

      terraform init -upgrade
      
    3. Проверьте версию провайдера:

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

    О создании такого файла читайте в разделе Создание кластера.

  3. Добавьте дополнительные ресурсы в конфигурационный файл.

    Для стандартного шардирования кластера с использованием хостов MONGOINFRA
    resources_mongoinfra {
      resource_preset_id = "<класс_хоста>"
      disk_type_id       = "<тип_диска>"
      disk_size          = <размер_хранилища_ГБ>
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongoinfra"
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongoinfra"
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongoinfra"
    }
    
    Для расширенного шардирования кластера с использованием хостов MONGOS и MONGOCFG
    resources_mongos {
      resource_preset_id = "<класс_хоста>"
      disk_type_id       = "<тип_диска>"
      disk_size          = <размер_хранилища_ГБ>
    }
    
    resources_mongocfg {
      resource_preset_id = "<класс_хоста>"
      disk_type_id       = "<тип_диска>"
      disk_size          = <размер_хранилища_ГБ>
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongos"
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongos"
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongocfg"
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongocfg"
    }
    
    host {
      zone_id   = "<зона_доступности>"
      subnet_id = "<идентификатор_подсети>"
      type      = "mongocfg"
    }
    
  4. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.EnableSharding и выполните запрос, например, с помощью 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/<идентификатор_кластера>:enableSharding' \
        --data '{
                  "<тип_хоста_MongoDB>": {
                    "resources": {
                      "resourcePresetId": "<класс_хоста>",
                      "diskSize": "<размер_хранилища_в_байтах>",
                      "diskTypeId": "<тип_диска>"
                    }
                  },
                  "hostSpecs": [
                    {
                      "zoneId": "<зона_доступности>",
                      "subnetId": "<идентификатор_подсети>",
                      "assignPublicIp": <публичный_адрес_хоста:_true_или_false>,
                      "type": "<тип_хоста>",
                      "shardName": "<имя_шарда>",
                      "hidden": <видимость_хоста:_true_или_false>,
                      "secondaryDelaySecs": "<задержка_в_секундах>",
                      "priority": "<приоритет_назначения_хоста_мастером>",
                      "tags": "<метки_хоста>"
                    },
                    { <аналогичный_набор_настроек_для_хоста_2> },
                    { ... },
                    { <аналогичный_набор_настроек_для_хоста_N> }
                  ]
                }'
    

    Где:

    • Тип хоста MongoDB — зависит от типа шардирования. Доступные значения: mongocfg, mongos, mongoinfra.

    • hostSpecs — массив новых хостов. Один элемент массива содержит настройки для одного хоста. Количество хостов зависит от типа шардирования.

      • zoneId — зона доступности.
      • subnetId — идентификатор подсети.
      • assignPublicIp — доступность хоста из интернета по публичному IP-адресу.
      • type— тип хоста (MONGOINFRA, MONGOS или MONGOCFG).
      • shardName — имя шарда.
      • hidden— будет ли хост виден или скрыт.
      • 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.EnableSharding и выполните запрос, например, с помощью 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": "<идентификатор_кластера>",
              "<тип_хоста_MongoDB>": {
                "resources": {
                  "resource_preset_id": "<класс_хоста>",
                  "disk_size": "<размер_хранилища_в_байтах>",
                  "disk_type_id": "<тип_диска>"
                }
              },
              "host_specs": [
                {
                  "zone_id": "<зона_доступности>",
                  "subnet_id": "<идентификатор_подсети>",
                  "assign_public_ip": <публичный_адрес_хоста:_true_или_false>,
                  "type": "<тип_хоста>",
                  "shard_name": "<имя_шарда>",
                  "hidden": <видимость_хоста:_true_или_false>,
                  "secondary_delay_secs": "<задержка_в_секундах>",
                  "priority": "<приоритет_назначения_хоста_мастером>",
                  "tags": "<метки_хоста>"
                },
                { <аналогичный_набор_настроек_для_хоста_2> },
                { ... },
                { <аналогичный_набор_настроек_для_хоста_N> }
              ]
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.EnableSharding
    

    Где:

    • Тип хоста MongoDB — зависит от типа шардирования. Доступные значения: mongocfg, mongos, mongoinfra.

    • host_specs — массив новых хостов. Один элемент массива содержит настройки для одного хоста. Количество хостов зависит от типа шардирования.

      • zone_id — зона доступности.
      • subnet_id — идентификатор подсети.
      • assign_public_ip — доступность хоста из интернета по публичному IP-адресу.
      • type— тип хоста (MONGOINFRA, MONGOS или MONGOCFG).
      • shard_name — имя шарда.
      • hidden— будет ли хост виден или скрыт.
      • secondary_delay_secs — время отставания хоста от мастера.
      • priority — приоритет назначения хоста мастером при выходе из строя основного мастера.
      • tags— метки хоста.

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

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

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

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

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

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

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

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

Результат:

+------+
| NAME |
+------+
| rs01 |
| rs02 |
+------+

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

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

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

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

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

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

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

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

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

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

  3. Воспользуйтесь вызовом ClusterService.ListShards и выполните запрос, например, с помощью 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.ListShards
    

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

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

Создать шардСоздать шард

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

Консоль управления
CLI
Terraform
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
  2. Нажмите на имя нужного кластера и выберите вкладку Шарды.
  3. Нажмите кнопку Создать шард.
  4. Укажите имя шарда и добавьте нужное количество хостов.
  5. Нажмите кнопку Создать шард.

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

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

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

yc managed-mongodb shards add <имя_нового_шарда> \
  --cluster-name=<имя_кластера> \
  --host zone-id=<зона_доступности>,`
    `subnet-name=<имя_подсети>

Где:

  • --cluster-name — имя кластера, которое можно получить со списком кластеров в каталоге.
  • --host — параметры хоста:
    • zone-id — зона доступности.
    • subnet-name — имя подсети.
  1. Убедитесь, что установленная версия провайдера — 0.90 или выше:

    terraform version
    

    Пример результата:

    Terraform v1.4.6
    on darwin_arm64
    + provider registry.terraform.io/yandex-cloud/yandex v0.91.0
    
    Если версия ниже

    Обновите версию провайдера:

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

    2. В этом же каталоге инициализируйте провайдера с новой версией, указанного в конфигурационном файле:

      terraform init -upgrade
      
    3. Проверьте версию провайдера:

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

    О создании такого файла читайте в разделе Создание кластера.

  3. Добавьте к описанию кластера Managed Service for MongoDB нужное количество блоков host с типом MONGOD в параметре type и именем шарда в параметре shard_name:

    resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
      ...
      host {
        zone_id    = "<зона_доступности>"
        subnet_id  = "<идентификатор_подсети>"
        type       = "mongod"
        shard_name = "<имя_шарда>"
      }
    }
    
  4. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.AddShard и выполните запрос, например, с помощью 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/<идентификатор_кластера>/shards' \
        --data '{
                  "shardName": "<имя_шарда>",
                  "hostSpecs": [
                    {
                      "zoneId": "<зона_доступности>",
                      "subnetId": "<идентификатор_подсети>",
                      "assignPublicIp": <публичный_адрес_хоста:_true_или_false>,
                      "type": "<тип_хоста>",
                      "shardName": "<имя_шарда>",
                      "hidden": <видимость_хоста:_true_или_false>,
                      "secondaryDelaySecs": "<время_в_секундах>",
                      "priority": "<приоритет_назначения_хоста_мастером>",
                      "tags": "<метки>"
                    },
                    { <аналогичный_набор_настроек_для_хоста_2> },
                    { ... },
                    { <аналогичный_набор_настроек_для_хоста_N> }
                  ]
                }'
    
    

    Где:

    • shardName — имя создаваемого шарда.

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

      • zoneId — зона доступности.
      • subnetId — идентификатор подсети.
      • assignPublicIp — доступность хоста из интернета по публичному IP-адресу.
      • type— тип хоста. Укажите MONGOD.
      • shardName — имя шарда.
      • hidden— будет ли хост виден или скрыт.
      • 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.AddShard и выполните запрос, например, с помощью 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": "<идентификатор_кластера>",
              "shard_name": "<имя_шарда>",
              "host_specs": [
                {
                  "zone_id": "<зона_доступности>",
                  "subnet_id": "<идентификатор_подсети>",
                  "assign_public_ip": <публичный_адрес_хоста:_true_или_false>,
                  "type": "<тип_хоста>",
                  "shard_name": "<имя_шарда>",
                  "hidden": <видимость_хоста:_true_или_false>,
                  "secondary_delay_secs": "<время_в_секундах>",
                  "priority": "<приоритет_назначения_хоста_мастером>",
                  "tags": "<метки>"
                },
                { <аналогичный_набор_настроек_для_хоста_2> },
                { ... },
                { <аналогичный_набор_настроек_для_хоста_N> }
              ]
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.redis.v1.ClusterService.AddShard    
    

    Где:

    • shard_name — имя создаваемого шарда.

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

      • zone_id — зона доступности.
      • subnet_id — идентификатор подсети.
      • assign_public_ip — доступность хоста из интернета по публичному IP-адресу.
      • type— тип хоста. Укажите MONGOD.
      • shard_name — имя шарда.
      • hidden— будет ли хост виден или скрыт.
      • secondary_delay_secs — время отставания хоста от мастера.
      • priority — приоритет назначения хоста мастером при выходе из строя основного мастера.
      • tags— метки хоста.

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

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

Удалить шардУдалить шард

Вы можете удалить шард из кластера MongoDB, если это не единственный шард. Чтобы заменить единственный шард, сначала создайте новый шард, а затем удалите старый.

Примечание

Для удаляемого шарда будет вызвана операция removeShard, которая безопасно переносит данные на оставшиеся шарды.

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

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

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

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

yc managed-mongodb shards delete <имя_шарда> \
  --cluster-name=<имя_кластера>

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

  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.

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

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

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

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

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

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

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

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

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

  3. Воспользуйтесь вызовом ClusterService.DeleteShard и выполните запрос, например, с помощью 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": "<идентификатор_кластера>",
              "shard_name": "<имя_шарда>" 
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.DeleteShard
    

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

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

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

Предыдущая
Управление пользователями БД
Следующая
Переключение первичной реплики
Проект Яндекса
© 2025 ООО «Яндекс.Облако»