Управление шардами MongoDB
Вы можете включить шардирование для кластера, а также добавлять и настраивать отдельные шарды.
Для повышения доступности шарды должны состоять как минимум из трех хостов 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. Если у вас нет вкладки Шарды, повысьте класс хостов кластера до поддерживаемого.
-
Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
-
Нажмите на имя нужного кластера и выберите вкладку Шарды.
-
Нажмите кнопку Включить.
-
Выберите один из типов шардирования:
-
Стандартный — с использованием хостов
MONGOINFRA
. -
Расширенный — с использованием хостов
MONGOS
иMONGOCFG
.Подробнее см. в разделе Шардирование в Managed Service for MongoDB.
Важно
После включения шардирования будет невозможно поменять его тип.
-
-
Задайте параметры хостов, которые будут обеспечивать доступ к шардированным данным.
-
Нажмите кнопку Включить шардирование.
Кластер начнет обновляться, при этом будут созданы запрошенные хосты, а также первый шард кластера.
Если у вас еще нет интерфейса командной строки 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.
Получить список шардов в кластере
- Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
- Нажмите на имя нужного кластера и выберите вкладку Шарды.
Если у вас еще нет интерфейса командной строки 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.
- Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
- Нажмите на имя нужного кластера и выберите вкладку Шарды.
- Нажмите кнопку Добавить шард.
- Укажите имя шарда и добавьте нужное количество хостов.
- Нажмите кнопку Создать шард.
Если у вас еще нет интерфейса командной строки 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
— имя подсети.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание MongoDB-кластера.
-
Добавьте к описанию кластера Managed Service for MongoDB нужное количество блоков
host
с указанием имени шарда в параметреshard_name
:resource "yandex_mdb_mongodb_cluster" "<имя кластера>" { ... host { zone = "<зона доступности>" subnet_id = "<идентификатор подсети>" shard_name = "<имя шарда>" } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Добавить шард в кластер можно с помощью метода addShard.
Удалить шард
Вы можете удалить шард из MongoDB-кластера, если он не является единственным шардом. Чтобы заменить единственный шард, сначала создайте новый шард, а затем удалите старый.
Примечание
Для удаляемого шарда будет вызвана операция removeShard, которая безопасно переносит данные на оставшиеся шарды.
- Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
- Нажмите на имя нужного кластера и выберите вкладку Шарды.
- Нажмите на значок
- В открывшемся окне нажмите кнопку Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить шард из кластера, выполните команду:
yc managed-mongodb shards delete <имя шарда> \
--cluster-name=<имя кластера>
Имя шарда можно запросить со списком шардов в кластере, имя кластера — со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание MongoDB-кластера.
-
Удалите из описания кластера Managed Service for MongoDB все блоки
host
, которые относятся к шарду. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yes
и нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Удалить шард можно с помощью метода deleteShard.