Переключение первичной реплики
Если в кластере есть несколько реплик, то при необходимости можно переключить первичную реплику (мастер).
Переключение в среднем занимает менее одной минуты. Во время переключения кластер может быть недоступен для записи в течение нескольких секунд.
Подробнее о переключении первичной реплики см. в документации MongoDB
- Перейдите на страницу каталога
и выберите сервис Managed Service for MongoDB. - Нажмите на имя нужного кластера и выберите вкладку Хосты.
- Нажмите на значок
в строкеPRIMARY
хоста и выберите пункт Сменить мастер.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы переключить первичную реплику в кластере, выполните команду:
yc managed-mongodb hosts stepdown <имя_текущей_первичной_реплики> \
--name=<имя_кластера>
Имя первичной реплики для нужного шарда можно получить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.StepdownHosts и выполните запрос, например, с помощью 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/<идентификатор_кластера>:stepdownHosts' \ --data '{ "hostNames": [ "<имя_текущей_первичной_реплики>" ] }'
Идентификатор кластера можно получить со списком кластеров в каталоге, а имя первичной реплики для нужного шарда — со списком хостов в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.StepdownHosts и выполните запрос, например, с помощью 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": "<идентификатор_кластера>", "host_names": [ "<имя_текущей_первичной_реплики>" ] }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.mongodb.v1.ClusterService.StepdownHosts
Идентификатор кластера можно получить со списком кластеров в каталоге, а имя первичной реплики для нужного шарда — со списком хостов в кластере.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.