Создание реплик чтения и управление ими в Базе данных Azure для MySQL с помощью Azure CLI и REST API

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для MySQL — отдельный сервер

Важно!

База данных Azure для MySQL один сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для MySQL гибкого сервера. Дополнительные сведения о миграции на гибкий сервер База данных Azure для MySQL см. в статье "Что происходит с одним сервером База данных Azure для MySQL?"

В этой статье вы узнаете как создавать реплики чтения и управлять ими в службе Базы данных Azure для MySQL с помощью Azure CLI и REST API. Дополнительные сведения о репликах чтения см. в этой статье.

Azure CLI

Вы можете создавать реплики чтения и управлять ими с помощью Azure CLI.

Необходимые компоненты

Важно!

Функция создания реплики чтения доступна только для серверов базы данных Azure для MySQL в ценовой категории "Общее назначение" или "Оптимизированная для операций в памяти". Убедитесь, что исходный сервер находится в одной из этих ценовых категорий.

Создание реплики чтения

Важно!

Если для исходного сервера нет серверов реплики, для подготовки к репликации может потребоваться перезагрузка исходного сервера в зависимости от используемого хранилища (v1/v2). Перезапускать сервер и выполнять эту операцию рекомендуется в часы наименьшей нагрузки. Дополнительные сведения см. в разделе Перезапуск исходного сервера.

Если GTID включен на главном сервере (gtid_mode = ON), для только что созданных реплик также будет включена функция GTID и будет применяться репликация на базе GTID. Дополнительные сведения см. в статье о глобальном идентификаторе транзакций (GTID).

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

az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup

Для команды az mysql server replica create обязательны указанные ниже параметры.

Параметр Пример значения Описание
resource-group  myresourcegroup  Группа ресурсов, в которой будет создан сервер реплики. 
name mydemoreplicaserver Имя нового сервера реплики, который создается.
source-server mydemoserver Имя или идентификатор имеющегося исходного сервера для репликации.

Чтобы создать реплику чтения между регионами, используйте параметр --location. В приведенном ниже примере CLI создается реплика в западной части США.

az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup --location westus

Примечание.

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

Примечание.

  • Команда az mysql server replica create принимает аргумент --sku-name, который позволяет указать номер SKU ({pricing_tier}_{compute generation}_{vCores}) для реплики, создаваемой с помощью Azure CLI.
  • Главный сервер и реплика чтения должны иметь одинаковые ценовые категории ("Общего назначения" или "Оптимизированная для операций в памяти").
  • Вы также можете изменить конфигурацию сервера-реплики после его создания. Чтобы сервер-реплика мог работать с исходным сервером, рекомендуется, чтобы значения конфигурации сервера-реплики были равны или превосходили значения конфигурации исходного сервера.

Вывод списка реплик для исходного сервера

Чтобы просмотреть все реплики для данного исходного сервера, выполните следующую команду:

az mysql server replica list --server-name mydemoserver --resource-group myresourcegroup

Для команды az mysql server replica list обязательны указанные ниже параметры.

Параметр Пример значения Описание
resource-group  myresourcegroup  Группа ресурсов, в которой будет создан сервер реплики. 
server-name mydemoserver Имя или идентификатор исходного сервера.

Остановка репликации на сервер-реплику

Важно!

Остановка репликации на сервер является необратимой операцией. Остановку репликации между исходным сервером и сервером реплики отменить невозможно. Сервер-реплика становится автономным и начинает поддерживает операции чтения и записи. Это сервер нельзя снова преобразовать в реплику.

Репликацию на сервер реплики чтения можно остановить, выполнив следующую команду:

az mysql server replica stop --name mydemoreplicaserver --resource-group myresourcegroup

Для команды az mysql server replica stop обязательны указанные ниже параметры.

Параметр Пример значения Описание
resource-group  myresourcegroup  Группа ресурсов, в которой находится сервер реплики. 
name mydemoreplicaserver Имя сервера реплики для остановки репликации.

Удаление сервера-реплики

Сервер реплики чтения можно удалить, выполнив команду az mysql server delete.

az mysql server delete --resource-group myresourcegroup --name mydemoreplicaserver

Удаление исходного сервера

Важно!

Удаление исходного сервера приводит к остановке репликации на все серверы-реплики и удалению самого исходного сервера. Серверы-реплики становятся автономными серверами, которые начинают поддерживать операции чтения и записи.

Чтобы удалить исходный сервер, вы можете выполнить команду az mysql server delete.

az mysql server delete --resource-group myresourcegroup --name mydemoserver

REST API

Вы можете создавать реплики чтения и управлять ими с помощью REST API Azure.

Создание реплики чтения

Вы можете создать реплику чтения с помощью API создания:

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{replicaName}?api-version=2017-12-01
{
  "location": "southeastasia",
  "properties": {
    "createMode": "Replica",
    "sourceServerId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{masterServerName}"
  }
}

Примечание.

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

При создании реплики используются те же параметры вычислений и хранилища, что и у главного сервера. После создания реплики вы можете независимо от исходного сервера изменять следующие ее параметры: поколение вычислительных ресурсов, виртуальные ядра, хранилище и период хранения резервных копий. Изменить также можно ценовую категорию (за исключением уровня "Базовый").

Важно!

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

Список реплик

Список реплик исходного сервера можно просмотреть с помощью API списка реплик:

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{masterServerName}/Replicas?api-version=2017-12-01

Остановка репликации на сервер-реплику

Вы можете отключить репликацию между исходным сервером и репликой чтения с помощью API обновления.

Остановленную репликацию на исходном сервере и на реплике чтения отменить невозможно. Реплика чтения становится отдельным сервером, который поддерживает операции чтения и записи. Это сервер нельзя снова преобразовать в реплику.

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{masterServerName}?api-version=2017-12-01
{
  "properties": {
    "replicationRole":"None"  
   }
}

Удаление исходного сервера или сервера-реплики

Чтобы удалить исходный сервер или сервер-реплику, используйте API удаления:

При удалении исходного сервера репликация всех реплик чтения останавливается. Реплики чтения становятся автономными серверами, которые начинают поддерживать операции чтения и записи.

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMySQL/servers/{serverName}?api-version=2017-12-01

Известная проблема

Существует два поколения хранилищ, которые используются серверами на уровнях общего назначения и с оптимизацией для операций в памяти: хранилище общего назначения версии 1 (поддерживает до 4 ТБ) и хранилище общего назначения версии 2 (до 16 ТБ). Исходный сервер и сервер-реплика должны использовать одинаковый тип хранилища. Так как хранилище общего назначения версии 2 доступно не во всех регионах, вы должны выбрать правильный регион реплики при использовании расположения в CLI или REST API для создания реплики чтения. Сведения о том, как определить тип хранилища исходного сервера, см. здесь.

Если выбран регион, в котором невозможно создать реплику чтения для исходного сервера, возникнет проблема: развертывание будет выполняться, как показано на рисунке ниже, а затем истечет время ожидания и появится сообщение об ошибке Операция подготовки ресурса не завершилась в течение допустимого периода ожидания.

Read replica cli error.

Следующие шаги