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

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

  • Перед обновлением версии
  • Обновить кластер
  • Примеры
  1. Пошаговые инструкции
  2. Кластеры
  3. Обновление версии MongoDB

Обновление версии MongoDB

Статья создана
Yandex Cloud
Улучшена
amatol
Обновлена 24 апреля 2025 г.
  • Перед обновлением версии
  • Обновить кластер
  • Примеры

Вы можете обновить кластер Managed Service for MongoDB только на следующую версию относительно текущей, например, с версии 4.2 на 4.4. Обновление до более поздних версий производится поэтапно. Например, обновление версии MongoDB с 4.2 до 6.0 выполняется в такой последовательности: 4.2 → 4.4 → 5.0 → 6.0.

Внимание

После обновления невозможно вернуть кластер к предыдущей версии.

Перед обновлением версииПеред обновлением версии

Убедитесь, что это не нарушит работу ваших приложений:

  1. Посмотрите в истории изменений MongoDB, как обновления могут повлиять на работу ваших приложений.
  2. Попробуйте обновить версию на тестовом кластере. Его можно развернуть из резервной копии основного кластера.
  3. Создайте резервную копию основного кластера непосредственно перед обновлением версии.

Обновить кластерОбновить кластер

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

После запуска обновления кластер переходит в статус UPDATING. Дождитесь окончания операции и проверьте версию кластера.

  1. Получите список ваших кластеров MongoDB командой:

    yc managed-mongodb cluster list
    
  2. Получите информацию о нужном кластере и проверьте версию MongoDB, указанную в свойстве config.version:

    yc managed-mongodb cluster get <имя_или_идентификатор_кластера>
    
  3. Запустите обновление MongoDB:

    yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \
       --mongodb-version=<номер_новой_версии>
    

    После запуска обновления кластер переходит в статус UPDATING. Дождитесь окончания операции и проверьте версию кластера.

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

    yc managed-mongodb cluster update <имя_или_идентификатор_кластера> \
       --feature-compatibility-version=<номер_новой_версии>
    

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

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

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

  2. Добавьте к описанию кластера Managed Service for MongoDB поле version или измените его значение, если оно уже существует:

    resource "yandex_mdb_mongodb_cluster" "<имя_кластера>" {
      ...
      cluster_config {
        version = "<версия_MongoDB>"
      }
    }
    
  3. Проверьте корректность настроек.

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

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

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

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

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

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

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

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

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

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

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.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.version",
                "configSpec": {
                  "version": "<новая_версия_MongoDB>"
                }
              }'
    

    Где:

    • updateMask — перечень изменяемых параметров в одну строку через запятую.

      В данном случае передается один параметр.

    • configSpec.version — новая версия MongoDB.

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

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

  4. После обновления все возможности MongoDB, у которых нет обратной совместимости с прежней версией, выключаются. Чтобы снять это ограничение, выполните еще один запрос и передайте номер новой версии MongoDB в свойстве configSpec.featureCompatibilityVersion.

    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.featureCompatibilityVersion",
                "configSpec": {
                  "featureCompatibilityVersion": "<новая_версия_MongoDB>"
                }
              }'
    
  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

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

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

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

  3. Воспользуйтесь вызовом 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.version"
                ]
              },  
              "config_spec": {
                "version": "<версия_MongoDB>"
              }
           }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.Update
    

    Где:

    • update_mask — перечень изменяемых параметров в виде массива строк paths[].

      В данном случае передается один параметр.

    • version — новая версия MongoDB.

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

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

  5. После обновления все возможности MongoDB, у которых нет обратной совместимости с прежней версией, выключаются. Чтобы снять это ограничение, выполните еще один запрос и передайте номер новой версии MongoDB в свойстве config_spec.feature_compatibility_version.

    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.feature_compatibility_version"
                ]
              },  
              "config_spec": {
                "feature_compatibility_version": "<новая_версия_MongoDB>"
              }
           }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.mongodb.v1.ClusterService.Update
    

ПримерыПримеры

Допустим, нужно обновить кластер с версии 5.0 до версии 6.0.

CLI
  1. Чтобы узнать идентификатор кластера, получите список всех кластеров в каталоге:

    yc managed-mongodb cluster list
    

    Результат:

    +----------------------+---------------+---------------------+--------+---------+
    |          ID          |     NAME      |     CREATED AT      | HEALTH | STATUS  |
    +----------------------+---------------+---------------------+--------+---------+
    | c9q8p8j2gaih******** |   mongodb406  | 2019-04-23 12:44:17 | ALIVE  | RUNNING |
    +----------------------+---------------+---------------------+--------+---------+
    
  2. Чтобы получить информацию о кластере c9qut3k64b2o********, выполните команду:

    yc managed-mongodb cluster get c9qut3k64b2o********
    

    Результат:

    id: c9qut3k64b2o********
    folder_id: b1g0itj57rbj********
    created_at: "2019-07-16T09:43:50.393231Z"
    name: mongodb406
    environment: PRODUCTION
    monitoring:
    - name: Console
      description: Console charts
      link: https://console.yandex.cloud/folders/b1g0itj57rbj********/managed-mongodb/cluster/c9qut3k64b2o********?section=monitoring
    config:
      version: "5.0"
      feature_compatibility_version: "5.0"
      ...
    
  3. Чтобы обновить кластер c9qutgkd4b2o******** до версии 6.0, выполните команду:

    yc managed-mongodb cluster update c9qutgkd4b2o******** \
        --mongodb-version=6.0
    
  4. Чтобы включить все возможности версии 6.0 в кластере c9qutgkd4b2o********, выполните команду:

    yc managed-mongodb cluster update c9qutgkd4b2o******** \
        --feature-compatibility-version=6.0
    

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

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