Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for MongoDB
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
      • Обзор способов подключения к базе данных
      • Подключение к нешардированному кластеру
      • Подключение к шардированному кластеру
    • Остановка и запуск кластера
    • Изменение настроек кластера и базы данных
    • Переключение первичной реплики
    • Обновление версии MongoDB
    • Управление базами данных
    • Управление хостами кластера
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
    • Диагностика производительности
    • Инструменты для анализа производительности
  • Практические руководства
    • Все сценарии
    • Шардирование коллекций
    • Миграция данных в Managed Service for MongoDB
    • Миграция коллекций из стороннего кластера MongoDB
    • Анализ производительности и оптимизация MongoDB
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for MongoDB
    • Редакции MongoDB
    • Квоты и лимиты
    • Хранилище в Managed Service for MongoDB
    • Резервные копии
    • Репликация
    • Шардирование
    • Пользователи и роли
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Настройки MongoDB
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • ResourcePresetService
      • UserService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • delete
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • backup
        • create
        • delete
        • deleteHosts
        • deleteShard
        • enableSharding
        • get
        • getShard
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShards
        • move
        • rescheduleMaintenance
        • resetupHosts
        • restartHosts
        • restore
        • start
        • stepdownHosts
        • stop
        • streamLogs
        • update
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о MongoDB
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Управление шардами

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

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

Вы можете включить шардирование для кластера, а также добавлять и настраивать отдельные шарды.

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

Внимание

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

    Важно

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

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

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

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

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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 — тип диска.

Включить шардирование кластера можно с помощью метода enableSharding.

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

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

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

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

Результат:

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

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

Получить список шардов кластера можно с помощью метода listShards.

Добавить шард

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

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

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

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

Где:

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

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

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

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

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

Добавить шард в кластер можно с помощью метода addShard.

Удалить шард

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

Примечание

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

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

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

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

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

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

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

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

  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.

Удалить шард можно с помощью метода deleteShard.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Включить шардирование
  • Получить список шардов в кластере
  • Добавить шард
  • Удалить шард