Создание реплик чтения и управление ими в База данных Azure для PostgreSQL — гибкий сервер из портал Azure, CLI или REST API
Статья
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для PostgreSQL — гибкий сервер
В этой статье вы узнаете, как создавать реплики чтения и управлять ими в База данных Azure для PostgreSQL гибком сервере из портал Azure, CLI и REST API. Дополнительные сведения о репликах чтения см. в этой статье.
Необходимые компоненты
База данных Azure для PostgreSQL гибкий экземпляр сервера, который должен быть основным сервером.
Примечание.
При развертывании реплик чтения для постоянных интенсивных рабочих нагрузок основной нагрузки, задержка репликации может продолжать расти и никогда не догонять основной. Это также может увеличить использование хранилища в основном, так как WAL-файлы удаляются только после получения на реплике.
Просмотр основных параметров
Перед настройкой реплики чтения для База данных Azure для PostgreSQL гибкого сервера убедитесь, что основной сервер настроен на соответствие необходимым предварительным требованиям. Определенные параметры на основном сервере могут повлиять на возможность создания реплик.
Автоматическое увеличение хранилища. Параметры автоматического увеличения хранилища на первичном сервере и его репликах чтения должны соответствовать определенным рекомендациям, чтобы обеспечить согласованность и предотвратить нарушения репликации. Чтобы получить подробные правила и параметры, ознакомьтесь с автоматическим расширением хранилища.
SSD уровня "Премиум" версии 2. Текущий выпуск не поддерживает создание реплик чтения для первичных серверов с помощью хранилища SSD класса Premium версии 2. Если для рабочей нагрузки требуются реплики чтения, выберите другой вариант хранилища для основного сервера.
В портал Azure выберите База данных Azure для PostgreSQL гибкий экземпляр сервера, который требуется для реплики.
В диалоговом окне "Обзор" обратите внимание на версию PostgreSQL (например15.4). Кроме того, обратите внимание, что основной регион развертывается в (например, East US).
На боковой панели сервера в разделе "Параметры" выберите "Вычисления и хранилище".
Просмотрите и запишите следующие параметры:
Уровень вычислений, процессор, размер (например Standard_D4ads_v5).
Хранилище
Размер хранилища (например 128GB)
Авторасширение
Высокий уровень доступности
Включено или отключено
Параметры зоны доступности
Параметры резервного копирования
Период хранения
Параметры избыточности
В разделе Параметры выберите Сеть.
Проверьте настройки сети.
Примечание.
Команды, указанные в этом руководстве, применимы для Azure CLI версии 2.56.0 или более поздней. Убедитесь, что у вас установлена требуемая версия или более поздняя для успешного выполнения этих команд. Текущую версию Azure CLI можно проверить, выполнив в az --version интерфейсе командной строки. Чтобы обновить Azure CLI до последней версии, следуйте инструкциям, приведенным в документации по Azure CLI.
Чтобы просмотреть конфигурацию и текущее состояние гибкого сервера Azure PostgreSQL, используйте az postgres flexible-server show команду. Эта команда содержит подробные сведения о указанном сервере.
az postgres flexible-server show \
--resource-group <resource-group> \
--name <server-name>
<server-name> Замените <resource-group> определенную группу ресурсов и имя сервера, который вы хотите просмотреть.
Просмотрите и запишите следующие параметры:
Уровень вычислений, процессор, размер (например Standard_D8ads_v5).
Чтобы получить сведения о конфигурации сервера в База данных Azure для PostgreSQL гибком сервере, особенно для просмотра параметров недавно представленных функций, таких как автоматическое увеличение хранилища или приватный канал, следует использовать последнюю версию 2023-06-01-previewAPI. Запрос GET будет отформатирован следующим образом:
Замените {subscriptionId}, {resourceGroupName}а также {serverName} идентификатором подписки Azure, именем группы ресурсов и именем основного сервера, который вы хотите проверить соответственно. Этот запрос предоставляет доступ к сведениям о конфигурации основного сервера, обеспечивая правильную настройку для создания реплики чтения.
Просмотрите и запишите следующие параметры:
Уровень вычислений, процессор, размер (например Standard_D8ads_v5).
Выберите существующий База данных Azure для PostgreSQL гибкий экземпляр сервера для использования в качестве основного сервера.
На боковой панели сервера в разделе "Параметры" выберите "Репликация".
Выберите Создать реплику.
Введите форму "Основы" со следующими сведениями.
Выберите "Проверить и создать ", чтобы подтвердить создание реплики или далее: сеть , если вы хотите добавить, удалить или изменить правила брандмауэра.
Оставьте оставшиеся значения по умолчанию, а затем нажмите кнопку "Просмотр и создание " в нижней части страницы или перейдите к следующим формам, чтобы добавить теги или изменить метод шифрования данных.
Проверьте сведения в окне окончательного подтверждения. Когда будете готовы, нажмите Создать. Создается новое развертывание.
Во время развертывания основной объект отображается в Updating состоянии.
После создания реплики чтения его можно просмотреть в окне репликации .
Замените <replica-name>, <source-server-name><resource-group>и <location> с конкретными значениями.
После создания реплики чтения свойства всех серверов, которые являются репликами первичной реплики, можно получить с помощью az postgres flexible-server replica create команды.
az postgres flexible-server replica list \
--name <source-server-name> \
--resource-group <resource-group>
Замените и <resource-group> укажите <source-server-name>определенные значения.
HTTP PUT Инициируйте запрос с помощью API создания серверов:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Здесь необходимо заменить {subscriptionId}{resourceGroupName}{replicaserverName} идентификатор подписки Azure, имя группы ресурсов и требуемое имя реплики чтения соответственно.
После создания реплики чтения свойства всех серверов, которые являются репликами первичной реплики, можно получить, инициируя HTTP GET запрос с помощью списка реплик по API сервера:
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/replicas?api-version=2022-12-01
Здесь необходимо заменить {subscriptionId}{resourceGroupName}{sourceserverName} идентификатор подписки Azure, имя группы ресурсов и имя, назначенное первичной реплике соответственно.
Задайте для вычислительных ресурсов и хранилища данные, записанные из основного ресурса. Если отображаемые вычисления не совпадают, выберите "Настроить сервер " и выберите соответствующий.
Примечание.
Если выбрать размер вычислительных ресурсов меньше основного, развертывание завершится ошибкой. Кроме того, помните, что размер вычислительных ресурсов может быть недоступен в другом регионе.
Чтобы избежать проблем во время повышения уровня реплик, сначала измените следующие параметры сервера на репликах, прежде чем применять их к основному: max_connections, max_prepared_transactions, max_locks_per_transaction, max_wal_senders. max_worker_processes
Создание виртуальных конечных точек
Примечание.
Все операции, связанные с виртуальными конечными точками, например добавление, редактирование или удаление, выполняются в контексте первичного сервера.
Замените <resource-group>, <virtual-endpoint-name><primary-name>и <replica-name> с конкретными значениями.
Чтобы создать виртуальную конечную точку с помощью REST API Azure, используйте HTTP PUT запрос. Запрос будет выглядеть следующим образом:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints/{virtualendpointName}?api-version=2023-06-01-preview
Сопровождающий текст JSON для этого запроса выглядит следующим образом:
Здесь необходимо заменить имя сервера-реплики, {replicaserverName} который вы включаете в качестве целевой точки чтения в эту виртуальную конечную точку.
Вывод списка виртуальных конечных точек
Чтобы получить список виртуальных конечных точек, выполните следующие действия.
На боковой панели сервера в разделе "Параметры" выберите "Репликация".
В верхней части страницы отображаются конечные точки чтения и записи, а также имена серверов, на которые они указывают.
Сведения о виртуальной конечной точке можно просмотреть с помощью команды list или show команды. Учитывая, что для каждой пары первичной реплики разрешено только одна виртуальная конечная точка, обе команды дают одинаковый результат.
Ниже приведен пример использования list команды:
az postgres flexible-server virtual-endpoint list \
--resource-group <resource-group> \
--server-name <server-name>
Замените <server-name> именем основного сервера и <resource-group> именем группы ресурсов.
Вот как можно использовать show команду:
az postgres flexible-server virtual-endpoint show \
--name <virtual-endpoint-name>
--resource-group <resource-group> \
--server-name <server-name>
В этой команде замените <virtual-endpoint-name>и<server-name><resource-group> соответствующими именами. <server-name> — имя основного сервера.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints?api-version=2023-06-01-preview
{sourceserverName} Здесь должно быть имя первичного сервера, с которого вы управляете виртуальными конечными точками.
Изменение приложения для указания на виртуальную конечную точку
Измените все приложения, использующие гибкий экземпляр сервера База данных Azure для PostgreSQL, чтобы использовать новые виртуальные конечные точки (например, corp-pg-001.writer.postgres.database.azure.com иcorp-pg-001.reader.postgres.database.azure.com).
Повышение уровня реплик
При этом все необходимые компоненты готовы к выполнению реплики повышения уровня до основной операции.
Чтобы повысить уровень реплики из портал Azure, выполните следующие действия.
В портал Azure выберите основной База данных Azure для PostgreSQL гибкий экземпляр сервера.
В меню сервера в разделе "Параметры" выберите "Репликация".
В разделе "Серверы" выберите значок "Повышение" для реплики.
В диалоговом окне убедитесь, что действие "Повышение уровня" на первичный сервер.
Для синхронизации данных убедитесь, что запланированные данные — синхронизация данных перед выбранным повышением .
Выберите "Повысить" , чтобы начать процесс. После завершения роли обратные роли: реплика становится первичной, а основная — ролью реплики.
При продвижении реплики на первичный сервер в Гибком сервере Azure PostgreSQL используйте az postgres flexible-server replica promote команду. Этот процесс необходим для повышения уровня сервера-реплики для работы в качестве основного сервера и понижения текущей первичной роли для реплики. Укажите --promote-mode switchover и --promote-option planned в команде.
<replica-server-name> Замените и на <resource-group> имя конкретной группы ресурсов и имени сервера-реплики. Эта команда обеспечивает плавное переход реплики на основную роль в плановом режиме.
При продвижении реплики на первичный сервер используйте HTTP PATCH запрос с определенным JSON текстом, чтобы задать параметры повышения. Этот процесс имеет решающее значение, если необходимо повысить уровень сервера-реплики для работы в качестве основного сервера.
В этом случае JSONповышение устанавливается в switchover режиме с параметром planned повышения. Хотя есть два варианта продвижения - planned или forced - выбран planned для этого упражнения.
Примечание.
Продвигаемая реплика должна назначить виртуальную конечную точку чтения или получить ошибку при повышении.
Тестовые приложения
Чтобы выполнить некоторые операции, перезапустите приложения и повторите эти операции. Приложения должны работать без изменения записей виртуальной конечной точки строка подключения или DNS. Оставьте приложения работать на этот раз.
Восстановление размещения на исходном сервере и регионе
Повторите те же операции, чтобы повысить исходный сервер до основного.
На боковой панели сервера в разделе "Параметры" выберите "Репликация"
В разделе "Серверы" выберите значок "Повышение" для реплики.
В диалоговом окне убедитесь, что действие "Повышение уровня" на первичный сервер.
Для синхронизации данных убедитесь, что запланированные данные — синхронизация данных перед выбранным повышением .
Выберите "Повышение", начинается процесс. После завершения роли обратные роли: реплика становится первичной, а основная — ролью реплики.
На этот раз измените <replica-server-name> команду az postgres flexible-server replica promote , чтобы ссылаться на старый первичный сервер, который в настоящее время выступает в качестве реплики, и снова выполните запрос.
<replica-server-name> Замените <resource-group> определенную группу ресурсов и текущее имя сервера реплики.
На этот раз измените {replicaserverName} запрос API, чтобы ссылаться на старый первичный сервер, который в настоящее время выступает в качестве реплики, и снова выполните запрос.
В этом случае JSONповышение устанавливается в switchover режиме с параметром planned повышения. Хотя есть два варианта продвижения - planned или forced - выбран planned для этого упражнения.
Тестовые приложения
Снова переключитесь на одно из используемых приложений. Дождитесь изменения Updating состояния первичной и реплики, а затем попытайтесь выполнить некоторые операции. Во время повышения уровня реплики приложение может столкнуться с временными проблемами подключения к конечной точке:
Добавление вторичной реплики чтения
Создайте вторичную реплику чтения в отдельном регионе, чтобы изменить виртуальную конечную точку чтения и разрешить создание независимого сервера из первой реплики.
В портал Azure выберите основной База данных Azure для PostgreSQL гибкий экземпляр сервера.
На боковой панели сервера в разделе "Параметры" выберите "Репликация".
Выберите Создать реплику.
Введите форму "Основы" с информацией в третьем регионе (например westus , и corp-pg-westus-001)
Выберите "Проверить и создать ", чтобы подтвердить создание реплики или далее: сеть , если вы хотите добавить, удалить или изменить правила брандмауэра.
Проверьте параметры брандмауэра. Обратите внимание, что основные параметры копируются автоматически.
Оставьте оставшиеся значения по умолчанию и нажмите кнопку "Проверить и создать " в нижней части страницы или перейдите к следующим формам, чтобы настроить безопасность или добавить теги.
Проверьте сведения в окне окончательного подтверждения. Когда будете готовы, нажмите Создать. Создается новое развертывание.
Во время развертывания основной объект отображается в Updating состоянии.
Выберите уникальное имя, чтобы <replica-name> отличить его от основного сервера и любых других реплик.
Замените <resource-group>, <source-server-name>а также <location> с конкретными значениями.
Вы можете создать вторичную реплику чтения с помощью api создания серверов:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
Выберите уникальное имя, чтобы {replicaserverName} отличить его от основного сервера и любых других реплик.
В портал Azure выберите основной База данных Azure для PostgreSQL гибкий экземпляр сервера.
На боковой панели сервера в разделе "Параметры" выберите "Репликация".
Выберите многоточие и нажмите кнопку "Изменить".
В диалоговом окне выберите новую вторичную реплику.
Выберите Сохранить. Конечная точка чтения теперь указывает на вторичную реплику, и операция повышения теперь привязана к этой реплике.
Теперь можно изменить конечную точку чтения, чтобы указать на только что созданную вторичную az postgres flexible-server virtual-endpoint update реплику с помощью команды. Не забудьте заменить <replica-name> имя созданной реплики чтения.
Замените <resource-group>, <virtual-endpoint-name><server-name>и <replica-name> с конкретными значениями.
Теперь можно изменить конечную точку чтения, чтобы указать на только что созданную вторичную PATCH реплику с помощью запроса. Не забудьте заменить {replicaserverName} имя созданной реплики чтения.
В портал Azure выберите сервер-источник База данных Azure для PostgreSQL гибкого сервера.
На боковой панели сервера в меню сервера в разделе "Параметры" выберите "Репликация".
В разделе "Серверы" выберите значок "Повышение" для реплики, которую вы хотите повысить до независимого сервера.
В диалоговом окне убедитесь, что действие повышено до независимого сервера и удаляется из репликации. Это не повлияет на основной сервер.
Для синхронизации данных убедитесь, что запланированные данные — синхронизация данных перед выбранным повышением .
Выберите "Повышение", начинается процесс. После завершения сервер больше не является репликой первичного сервера.
При продвижении реплики в гибком сервере Azure PostgreSQL поведение по умолчанию — повышение уровня реплики на независимый сервер. Повышение достигается с помощью az postgres flexible-server replica promote команды без указания --promote-mode параметра, так как standalone режим предполагается по умолчанию.
В этой команде замените <resource-group> и <replica-server-name> на имя определенной группы ресурсов и имя созданного сервера первой реплики, который больше не является частью виртуальной конечной точки.
Вы можете повысить уровень реплики на автономный сервер с помощью PATCH запроса. Отправьте запрос на указанный PATCH URL-адрес REST API управления Azure с первым JSON текстом, где PromoteMode задано значение standalone и PromoteOption значение planned. JSON Второй формат текста, для параметра ReplicationRoleNone, не рекомендуется, но по-прежнему упоминается здесь для обратной совместимости.
На боковой панели сервера в разделе "Параметры" выберите "Репликация".
В верхней части страницы найдите Virtual endpoints раздел. Перейдите к трем точкам (параметрам меню) рядом с именем конечной точки, разверните ее и выберите Delete.
Появится диалоговое окно подтверждения удаления. Он предупреждает: "Это действие удаляет виртуальную конечную точку virtualendpointName. Все клиенты, подключенные с помощью этих доменов, могут потерять доступ". Подтвердите последствия и подтвердите, нажав кнопку "Удалить".
Чтобы удалить виртуальную конечную точку из гибкого сервера Azure PostgreSQL, можно использовать az postgres flexible-server virtual-endpoint delete команду. Это действие окончательно удаляет указанную виртуальную конечную точку.
В этой команде замените <resource-group><server-name>, а <virtual-endpoint-name> также на определенную группу ресурсов, имя сервера и имя виртуальной конечной точки, которую вы хотите удалить.
Чтобы удалить виртуальную конечную точку с помощью REST API Azure, вы получите HTTP DELETE запрос. URL-адрес запроса будет структурирован следующим образом:
Вы можете удалить реплику чтения, аналогичную удалению автономного База данных Azure для PostgreSQL гибкого экземпляра сервера.
На портале Azure откройте страницу Обзор реплики чтения. Выберите команду Удалить.
Кроме того, реплику можно удалить из окна Репликация, выполнив следующие действия:
В портал Azure выберите основной База данных Azure для PostgreSQL гибкий экземпляр сервера.
В меню сервера в разделе "Параметры" выберите "Репликация".
Выберите реплику чтения для удаления и выберите многоточие. Выберите команду Удалить.
Подтвердите операцию удаления .
Чтобы удалить основной сервер или сервер реплики, используйте az postgres flexible-server delete команду. Если сервер имеет реплики чтения, перед удалением основного сервера необходимо сначала удалить реплики чтения.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
<server-name> Замените <resource-group> имя группы ресурсов и имя сервера реплики, которые вы хотите удалить.
Чтобы удалить первичный или репликовый сервер, используйте API удаления серверов. Если сервер имеет реплики чтения, перед удалением основного сервера необходимо сначала удалить реплики чтения.
После удаления всех реплик чтения можно удалить только первичный сервер. Чтобы удалить реплики, следуйте инструкциям в разделе "Удаление реплики ", а затем выполните указанные действия.
Чтобы удалить сервер на портале Azure, сделайте следующе:
В портал Azure выберите основной База данных Azure для PostgreSQL гибкий экземпляр сервера.
Откройте страницу обзора сервера и нажмите кнопку "Удалить".
Введите имя главного сервера, который нужно удалить. Выберите "Удалить ", чтобы подтвердить удаление основного сервера.
Чтобы удалить основной сервер или сервер реплики, используйте az postgres flexible-server delete команду. Если сервер имеет реплики чтения, перед удалением основного сервера необходимо сначала удалить реплики чтения.
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
<server-name> Замените <resource-group> имя группы ресурсов и имя сервера-источника, которое вы хотите удалить.
Чтобы удалить первичный или репликовый сервер, используйте API удаления серверов. Если сервер имеет реплики чтения, перед удалением основного сервера необходимо сначала удалить реплики чтения.
Выполнять мониторинг реплик чтения можно на основе двух метрик.
Максимальная задержка физической репликации
Доступно только для основного.
Метрика "Максимальная физическая репликация" показывает задержку байтов между первичным сервером и самой заметкой реплики.
В портал Azure выберите основной сервер.
Выберите Метрики. В окне метрик выберите Max Physical Replication Lag.
Для параметра агрегирования установите значение Макс.
Метрика задержки чтения реплики
Метрика "Задержка чтения" показывает время с момента последнего воспроизведения транзакции на реплике. Если транзакции не происходят в основном, метрика отражает это время задержки. Например, если на основном сервере нет транзакций, а последняя транзакция была воспроизведена 5 секунд назад, то задержка реплики чтения показывает задержку в 5 секундах.
В портал Azure выберите реплику чтения.
Выберите Метрики. В окне метрик выберите "Задержка реплики чтения".
Для параметра агрегирования установите значение Макс.