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

Область применения: отдельный сервер Базы данных Azure для PostgreSQL

Внимание

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

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

Поддержка репликации Azure

Получение сведений репликами чтения и логическим декодированием зависит от журнала с упреждающей записью (WAL) Postgres. Для этих двух функций требуются разные уровни ведения журнала от Postgres. Логическому декодированию нужен более высокий уровень ведения журнала, чем репликам чтения.

Чтобы правильно настроить уровень ведения журнала, используйте параметр поддержки репликации Azure. Параметр поддержки репликации Azure имеет три варианта значений:

  • Выкл. — в WAL записывается минимум информации. Этот вариант недоступен на большинстве серверов Базы данных Azure для PostgreSQL.
  • Реплика — более подробное протоколирование, чем в режиме Выкл. Это минимальный уровень ведения журнала, необходимый для работы реплик чтения. Этот вариант используется по умолчанию на большинстве серверов.
  • Логический — более подробное протоколирование, чем в режиме Реплика. Это минимальный уровень ведения журнала для работы логического декодирования. Реплики чтения тоже работают с этим вариантом.

Примечание.

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

Azure CLI

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

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

Подготовка главного сервера

  1. Проверьте значение azure.replication_support на главном сервере. Чтобы реплики чтения работали, в нем должно быть указано, как минимум, REPLICA.

    az postgres server configuration show --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support
    
  2. Если для azure.replication_support задано значение более низкого уровня, установите REPLICA.

    az postgres server configuration set --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support --value REPLICA
    
  3. Перезагрузите сервер, чтобы это изменение вступило в силу.

    az postgres server restart --name mydemoserver --resource-group myresourcegroup
    

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

Для команды az postgres server replica create нужны следующие параметры:

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

В приведенном ниже примере CLI реплика создается в том же регионе, что и основной.

az postgres server replica create --name mydemoserver-replica --source-server mydemoserver --resource-group myresourcegroup

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

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

Примечание.

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

Если вы не задали для параметра azure.replication_support значение REPLICA на главном сервере общего назначения или оптимизированном для памяти, и не перезапустили сервер, появится сообщение об ошибке. Эти два шага нужно выполнить, прежде чем перейти к созданию реплики.

Внимание

Ознакомьтесь с разделом рекомендаций в обзоре реплики чтения.

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

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

Список реплик главного сервера можно просмотреть с помощью команды az postgres server replica list.

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

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

Чтобы остановить репликацию между главным сервером и репликой чтения, используйте команду az postgres server replica stop.

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

az postgres server replica stop --name mydemoserver-replica --resource-group myresourcegroup 

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

Чтобы удалить главный сервер или сервер-реплику, используйте команду az postgres server delete.

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

az postgres server delete --name myserver --resource-group myresourcegroup

REST API

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

Подготовка главного сервера

  1. Проверьте значение azure.replication_support на главном сервере. Чтобы реплики чтения работали, в нем должно быть указано, как минимум, REPLICA.

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
  2. Если для azure.replication_support задано значение более низкого уровня, установите REPLICA.

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
    {
     "properties": {
     "value": "replica"
     }
    }
    
  3. Перезагрузите сервер, чтобы изменение вступило в силу.

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

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

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

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

Примечание.

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

Если вы не задали для параметра azure.replication_support значение REPLICA на главном сервере общего назначения или оптимизированном для памяти, и не перезапустили сервер, появится сообщение об ошибке. Эти два шага нужно выполнить, прежде чем перейти к созданию реплики.

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

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