Изменение настроек кластера MongoDB
После создания кластера вы можете:
- Изменить класс хостов.
- Изменить тип диска и увеличить размер хранилища.
- Настроить серверы MongoDB согласно документации MongoDB
. - Изменить дополнительные настройки кластера.
- Переместить кластер в другой каталог.
- Изменить группы безопасности.
Если вы хотите переместить кластер в другую зону доступности, обратитесь к инструкции. В результате вы перенесете хосты кластера.
Изменить класс хостов
Примечание
Некоторые настройки MongoDB зависят от выбранного класса хостов.
При смене класса хостов:
- Кластер из одного хоста будет недоступен несколько минут, соединения с БД будут прерваны.
- В кластере из нескольких хостов сменится первичная реплика. Каждый хост по очереди будет остановлен и обновлен, остановленный хост будет недоступен несколько минут.
Рекомендуется изменять класс хостов только во время отсутствия рабочей нагрузки на кластер.
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. -
Выберите кластер и нажмите кнопку Редактировать на панели сверху.
-
В блоке Класс хоста выберите:
- Одну из доступных платформ.
- Тип конфигурации: memory-optimized, cpu-optimized, standard или burstable.
- Класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. При изменении класса хостов для кластера меняются характеристики всех созданных хостов.
-
Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить класс хостов для кластера:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-mongodb cluster update --help
-
Запросите список доступных классов хостов (в колонке
ZONE IDS
указаны зоны доступности, в которых можно выбрать соответствующий класс):yc managed-mongodb resource-preset list +-----------+--------------------------------+-------+----------+ | ID | ZONE IDS | CORES | MEMORY | +-----------+--------------------------------+-------+----------+ | s1.micro | ru-central1-a, ru-central1-b, | 2 | 8.0 GB | | | ru-central1-d | | | | ... | +-----------+--------------------------------+-------+----------+
-
Укажите нужный класс в команде изменения кластера. При смене класса учитывайте роль хоста, она зависит от типа шардирования. В одной команде можно использовать параметры для хостов с разными ролями.
-
Для хостов
MONGOD
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongod-resource-preset <ID_класса>
-
Для хостов
MONGOINFRA
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongoinfra-resource-preset <ID_класса>
-
Для хостов
MONGOS
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongos-resource-preset <ID_класса>
-
Для хостов
MONGOCFG
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongocfg-resource-preset <ID_класса>
Managed Service for MongoDB запустит операцию изменения класса хостов для кластера.
-
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените в описании кластера Managed Service for MongoDB значение параметра
resource_preset_id
для ресурсовresources_mongod
,resources_mongoinfra
,resources_mongos
илиresources_mongocfg
. Тип ресурса зависит от типа шардирования.Пример:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... resources_mongod { resource_preset_id = "<класс_хостов>" ... } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.mongodb.<тип_хоста_MongoDB>.resources.resourcePresetId", "configSpec": { "mongodb": { "<тип_хоста_MongoDB>": { "resources": { "resourcePresetId": "<класс_хостов>" } } } } }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую.В данном случае передается только один параметр.
-
configSpec.mongodb.<тип_хоста_MongoDB>.resources.resourcePresetId
— новый класс хостов.Тип хоста MongoDB зависит от типа шардирования. Доступные значения:
mongod
,mongocfg
,mongos
,mongoinfra
. Если кластер нешардированный, укажитеmongod
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью 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_mask": { "paths": [ "config_spec.mongodb.<тип_хоста_MongoDB>.resources.resource_preset_id" ] }, "config_spec": { "mongodb": { "<тип_хоста_MongoDB>": { "resources": { "resource_preset_id": "<класс_хостов>" } } } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
.В данном случае передается только один параметр.
-
config_spec.mongodb.<тип_хоста_MongoDB>.resources.resource_preset_id
— новый класс хостов.Тип хоста MongoDB зависит от типа шардирования. Доступные значения:
mongod
,mongocfg
,mongos
,mongoinfra
. Если кластер нешардированный, укажитеmongod
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить тип диска и увеличить размер хранилища
Проверьте, что в облаке достаточно квот для увеличения хранилища. Откройте страницу Квоты
Чтобы изменить тип диска и увеличить размер хранилища для кластера:
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. -
Выберите кластер и нажмите кнопку Редактировать на панели сверху.
-
В блоке Размер хранилища:
- Выберите тип диска.
- Укажите нужный размер диска.
-
Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить тип диска и увеличить размер хранилища для кластера:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-mongodb cluster update --help
-
Укажите тип диска и нужный размер хранилища в команде изменения кластера (размер хранилища должен быть не меньше, чем значение
disk_size
в свойствах кластера).При увеличении размера хранилища учитывайте роль хоста, она зависит от типа шардирования. В одной команде можно использовать параметры для хостов с разными ролями.
-
Для хостов
MONGOD
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongod-disk-type <тип_диска> \ --mongod-disk-size <размер_хранилища_ГБ>
-
Для хостов
MONGOINFRA
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongoinfra-disk-type <тип_диска> \ --mongoinfra-disk-size <размер_хранилища_ГБ>
-
Для хостов
MONGOS
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongos-disk-type <тип_диска> \ --mongos-disk-size <размер_хранилища_ГБ>
-
Для хостов
MONGOCFG
:yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --mongocfg-disk-type <тип_диска> \ --mongocfg-disk-size <размер_хранилища_ГБ>
Если все условия выполнены, Managed Service for MongoDB запустит операцию по изменению параметров хранилища.
-
Чтобы изменить тип диска и увеличить размер хранилища для кластера:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените в описании кластера Managed Service for MongoDB значения параметров
disk_type_id
иdisk_size
для ресурсовresources_mongod
,resources_mongoinfra
,resources_mongos
илиresources_mongocfg
. Тип ресурса зависит от типа шардирования.Пример:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... resources_mongod { disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> ... } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.mongodb.<тип_хоста_MongoDB>.resources.diskTypeId,configSpec.mongodb.<тип_хоста_MongoDB>.resources.diskSize", "configSpec": { "mongodb": { "<тип_хоста_MongoDB>": { "resources": { "diskTypeId": "<тип_диска>", "diskSize": "<размер_хранилища_в_байтах>" } } } } }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую. -
configSpec.mongodb.<тип_хоста_MongoDB>.resources
— параметры хранилища:diskTypeId
— тип диска.diskSize
— новый размер хранилища в байтах.
Тип хоста MongoDB зависит от типа шардирования. Доступные значения:
mongod
,mongocfg
,mongos
,mongoinfra
. Если кластер нешардированный, укажитеmongod
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью 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_mask": { "paths": [ "config_spec.mongodb.<тип_хоста_MongoDB>.resources.disk_type_id", "config_spec.mongodb.<тип_хоста_MongoDB>.resources.disk_size" ] }, "config_spec": { "mongodb": { "<тип_хоста_MongoDB>": { "resources": { "disk_type_id": "<тип_диска>", "disk_size": "<размер_хранилища_в_байтах>" } } } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
. -
config_spec.mongodb.<тип_хоста_MongoDB>.resources.disk_size
— параметры хранилища:disk_type_id
— тип диска.disk_size
— новый размер хранилища в байтах.
Тип хоста MongoDB зависит от типа шардирования. Доступные значения:
mongod
,mongocfg
,mongos
,mongoinfra
. Если кластер нешардированный, укажитеmongod
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить настройки MongoDB
Вы можете изменить настройки СУБД для хостов вашего кластера.
Примечание
Некоторые настройки MongoDB зависят от выбранного класса хостов.
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Выберите кластер и нажмите кнопку Редактировать на панели сверху.
- Чтобы изменить настройки MongoDB, нажмите кнопку Настроить в блоке Настройки СУБД.
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить настройки MongoDB для кластера, используйте команду:
yc managed-mongodb cluster update-config
Например, для установки значения параметра net.maxIncomingConnections4096
, выполните следующую команду:
yc managed-mongodb cluster update-config <имя_кластера> \
--set net.max_incoming_connections=4096
Managed Service for MongoDB запустит операцию изменения настроек СУБД для кластера. Если изменяемая настройка применяется только с перезапуском СУБД, то Managed Service for MongoDB последовательно перезапустит СУБД на всех хостах кластера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "configSpec.mongodb.<тип_хоста_MongoDB>.config.<настройка_1>,configSpec.mongodb.<тип_хоста_MongoDB>.config.<настройка_2>,...,configSpec.mongodb.<тип_хоста_MongoDB>.config.<настройка_N>", "configSpec": { "mongodb": { "<тип_хоста_MongoDB>": { "config": { "<настройка_1>": "<значение_1>", "<настройка_2>": "<значение_2>", ... "<настройка_N>": "<значение_N>" } } } } }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую. -
configSpec.mongodb.<тип_хоста_MongoDB>.config
— набор настроек MongoDB. Укажите каждую настройку на отдельной строке через запятую. Все поддерживаемые настройки описаны в справочнике API и в разделе Настройки MongoDB.Тип хоста MongoDB зависит от типа шардирования. Доступные значения:
mongod
,mongocfg
,mongos
,mongoinfra
. Если кластер нешардированный, укажитеmongod
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью 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_mask": { "paths": [ "config_spec.mongodb.<тип_хоста_MongoDB>.config.<настройка_1>", "config_spec.mongodb.<тип_хоста_MongoDB>.config.<настройка_2>", ... "config_spec.mongodb.<тип_хоста_MongoDB>.config.<настройка_N>" ] }, "config_spec": { "mongodb": { "<тип_хоста_MongoDB>": { "config": { "<настройка_1>": "<значение_1>", "<настройка_2>": "<значение_2>", ... "<настройка_N>": "<значение_N>" } } } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
. -
config_spec.mongodb.<тип_хоста_MongoDB>.config
— набор настроек MongoDB. Укажите каждую настройку на отдельной строке через запятую. Все поддерживаемые настройки описаны в справочнике API и в разделе Настройки MongoDB.Тип хоста MongoDB зависит от типа шардирования. Доступные значения:
mongod
,mongocfg
,mongos
,mongoinfra
. Если кластер нешардированный, укажитеmongod
.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить дополнительные настройки кластера
-
Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. -
Выберите кластер и нажмите кнопку Редактировать на панели сверху.
-
Измените дополнительные настройки кластера:
-
Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию —
22:00 - 23:00
UTC. -
Срок хранения автоматических резервных копий, дней
Время, в течение которого нужно хранить созданные автоматически резервные копии. Если для такой копии истекает срок хранения, то она удаляется. Значение по умолчанию — 7 дней. Эта функциональность находится на стадии Preview. Подробнее см. в разделе Резервные копии.
Изменение срока хранения затрагивает как новые автоматические резервные копии, так и уже существующие. Например, если изначальный срок хранения был 7 дней и оставшееся время жизни отдельной автоматической резервной копии при таком сроке — 1 день, то при увеличении срока хранения до 9 дней, оставшееся время жизни этой резервной копии будет уже 3 дня.
Для существующего кластера автоматически созданные копии хранятся заданное количество дней, а созданные вручную — бессрочно. После удаления кластера все копии хранятся 7 дней.
-
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Сбор статистики — включите эту опцию, чтобы пользоваться встроенным инструментом для диагностики производительности в кластере. Эта функциональность находится на стадии Preview.
-
Защита от удаления — защита кластера от непреднамеренного удаления. Включенная защита не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
-
-
Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить дополнительные настройки кластера:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-mongodb cluster update --help
-
Выполните команду, передав список настроек, которые хотите изменить:
yc managed-mongodb cluster update <идентификатор_или_имя_кластера> \ --backup-retain-period-days=<срок_хранения> \ --backup-window-start <время_начала_резервного_копирования> \ --maintenance-window type=<тип_технического_обслуживания>,` `day=<день_недели>,` `hour=<час_дня> \ --performance-diagnostics=<включить_диагностику> \ --deletion-protection
Вы можете изменить следующие настройки:
-
--backup-retain-period
— срок хранения автоматических резервных копий (в днях).Значение параметра
<срок_хранения>
задается в диапазоне от 7 до 35 (по умолчанию — 7). Эта функциональность находится на стадии Preview. Подробнее см. в разделе Резервные копии.Изменение срока хранения затрагивает как новые автоматические резервные копии, так и уже существующие.
Например, если изначальный срок хранения был семь дней и оставшееся время жизни отдельной автоматической резервной копии при таком сроке — один день, то при увеличении срока хранения до девяти дней оставшееся время жизни этой резервной копии будет уже три дня.
--backup-window-start
— время начала резервного копирования кластера, задается по UTC в форматеHH:MM:SS
. Если время не задано, резервное копирование начнется в 22:00 UTC.
-
--maintenance-window
— настройки времени технического обслуживания (в т. ч. для выключенных кластеров), гдеtype
— тип технического обслуживания:anytime
(по умолчанию) — в любое время.weekly
— по расписанию. При задании этого значения укажите день недели и час дня:day
— день недели в форматеDDD
:MON
,TUE
,WED
,THU
,FRI
,SAT
илиSUN
.hour
— час дня по UTC в форматеHH
: от1
до24
.
-
--performance-diagnostics
— укажите параметр, чтобы воспользоваться инструментом Диагностика производительности в кластере. Эта функциональность находится на стадии Preview. -
--deletion-protection
— защита кластера от непреднамеренного удаления. Включенная защита не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
Идентификатор и имя кластера можно получить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Чтобы изменить время начала резервного копирования, добавьте к описанию кластера Managed Service for MongoDB блок
backup_window_start
в секцииcluster_config
:resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... cluster_config { backup_window_start { hours = <час> minutes = <минута> } ... } ... }
Где
hours
иminutes
— час и минута начала резервного копирования. -
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок
maintenance_window
:resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... maintenance_window { type = <тип_технического_обслуживания> day = <день_недели> hour = <час_дня> } ... }
Где:
type
— тип технического обслуживания. Принимает значения:ANYTIME
— в любое время.WEEKLY
— по расписанию.
day
— день недели для типаWEEKLY
в форматеDDD
. Например,MON
.hour
— час дня по UTC для типаWEEKLY
в форматеHH
. Например,21
.
-
Чтобы защитить кластер от непреднамеренного удаления пользователем вашего облака, добавьте к описанию кластера поле
deletion_protection
со значениемtrue
:resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... deletion_protection = <защита_кластера_от_удаления> }
Включенная защита не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
Чтобы отключить защиту, установите значение
false
. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Создайте файл
body.json
и добавьте в него следующее содержимое:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).{ "updateMask": "configSpec.backupWindowStart,configSpec.backupRetainPeriodDays,configSpec.performanceDiagnostics,maintenanceWindow,deletionProtection", "configSpec": { "backupWindowStart": { "hours": "<часы>", "minutes": "<минуты>", "seconds": "<секунды>", "nanos": "<наносекунды>" }, "backupRetainPeriodDays": "<время_хранения_резервных_копий_в_днях>", "performanceDiagnostics": { "profilingEnabled": <включить_профилировщик:_true_или_false> } } "maintenanceWindow": { "weeklyMaintenanceWindow": { "day": "<день_недели>", "hour": "<час>" } }, "deletionProtection": <защита_кластера_от_удаления:_true_или_false> }
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую. -
configSpec
— настройки кластера:-
backupWindowStart
— настройки окна резервного копирования.В параметре укажите время, когда начинать резервное копирование:
hours
— от0
до23
часов.minutes
— от0
до59
минут.seconds
— от0
до59
секунд.nanos
— от0
до999999999
наносекунд.
-
backupRetainPeriodDays
— время хранения резервных копий в днях. -
performanceDiagnostics
— настройки для сбора статистики:profilingEnabled
— включение профилировщика.
-
-
maintenanceWindow
— настройки времени технического обслуживания (в т. ч. для выключенных кластеров). ВmaintenanceWindow
передайте один из двух параметров:-
anytime
— техническое обслуживание происходит в любое время. -
weeklyMaintenanceWindow
— техническое обслуживание происходит раз в неделю, в указанное время:day
— день недели в форматеDDD
.hour
— час в форматеHH
. Возможные значения: от1
до24
часов.
-
-
deletionProtection
— защита кластера от непреднамеренного удаления:true
илиfalse
. Включенная защита не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
-
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>' \ --data "@body.json"
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Создайте файл
body.json
и добавьте в него следующее содержимое:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask
(в виде массива строкpaths[]
).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }
{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "config_spec.backup_window_start", "config_spec.backup_retain_period_days", "config_spec.performance_diagnostics", "maintenance_window", "deletion_protection" ] }, "config_spec": { "backup_window_start": { "hours": "<часы>", "minutes": "<минуты>", "seconds": "<секунды>", "nanos": "<наносекунды>" }, "backup_retain_period_days": "<время_хранения_резервных_копий_в_днях>", "performance_diagnostics": { "profiling_enabled": <включить_профилировщик:_true_или_false> } }, "maintenance_window": { "weekly_maintenance_window": { "day": "<день_недели>", "hour": "<час>" } }, "deletion_protection": <защита_кластера_от_удаления:_true_или_false> }
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
. -
config_spec
— настройки кластера:-
backup_window_start
— настройки окна резервного копирования.В параметре укажите время, когда начинать резервное копирование:
hours
— от0
до23
часов.minutes
— от0
до59
минут.seconds
— от0
до59
секунд.nanos
— от0
до999999999
наносекунд.
-
backup_retain_period_days
— время хранения резервных копий в днях. -
performance_diagnostics
— настройки для сбора статистики:profiling_enabled
— включение профилировщика.
-
-
maintenance_window
— настройки времени технического обслуживания (в т. ч. для выключенных кластеров). Вmaintenance_window
передайте один из двух параметров:-
anytime
— техническое обслуживание происходит в любое время. -
weekly_maintenance_window
— техническое обслуживание происходит раз в неделю, в указанное время:day
— день недели в форматеDDD
.hour
— час в форматеHH
. Возможные значения: от1
до24
часов.
-
-
deletion_protection
— защита кластера от непреднамеренного удаления:true
илиfalse
. Включенная защита не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
-
-
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью 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 @ \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.Update \ < body.json
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Переместить кластер
- Перейдите на страницу каталога и выберите сервис Managed Service for MongoDB.
- Нажмите на значок
справа в строке кластера, который вы хотите переместить. - Выберите пункт Переместить.
- Выберите каталог, в который вы хотите переместить кластер.
- Нажмите кнопку Переместить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы переместить кластер:
-
Посмотрите описание команды CLI для перемещения кластера:
yc managed-mongodb cluster move --help
-
Укажите каталог назначения в команде перемещения кластера:
yc managed-mongodb cluster move <имя_или_идентификатор_кластера> \ --destination-folder-name=<имя_каталога_назначения>
Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Move и выполните запрос, например, с помощью 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/<идентификатор_кластера>:move' \ --data '{ "destinationFolderId": "<идентификатор_каталога>" }'
Где
destinationFolderId
— идентификатор каталога, куда перемещается кластер. Идентификатор можно получить со списком каталогов в облаке.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Move и выполните запрос, например, с помощью 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": "<идентификатор_кластера>", "destination_folder_id": "<идентификатор_каталога>" }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.Move
Где
destination_folder_id
— идентификатор каталога, куда перемещается кластер. Идентификатор можно получить со списком каталогов в облаке.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить группы безопасности
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Выберите кластер и нажмите кнопку Редактировать на панели сверху.
- В блоке Сетевые настройки выберите группы безопасности для сетевого трафика кластера.
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы изменить список групп безопасности для кластера:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-mongodb cluster update --help
-
Укажите нужные группы безопасности в команде изменения кластера:
yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \ --security-group-ids <список_идентификаторов_групп_безопасности>
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Измените в описании кластера Managed Service for MongoDB значение параметра
security_group_ids
:resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" { ... security_group_ids = [ <список_идентификаторов_групп_безопасности> ] ... }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for MongoDB:
- создание, в т. ч. путем восстановления из резервной копии, — 30 минут;
- изменение — 60 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts
, например:
resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-mongodb/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "securityGroupIds", "securityGroupIds": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ] }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую.В данном случае передается только один параметр.
-
securityGroupIds
— список идентификаторов групп безопасности.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью 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_mask": { "paths": [ "security_group_ids" ] }, "security_group_ids": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
.В данном случае передается только один параметр.
-
security_group_ids
— список идентификаторов групп безопасности.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Может потребоваться дополнительная настройка групп безопасности для подключения к кластеру.