Реплики чтения в Azure Cosmos DB for PostgreSQL
Область применения: Azure Cosmos DB для PostgreSQL (на базе расширения базы данных Citus до PostgreSQL)
Функция реплики чтения позволяет реплицировать данные из кластера в кластер только для чтения. Эти реплики обновляются асинхронно с использованием технологии физической репликации PostgreSQL. Вы можете запускать до пяти реплик с главного сервера.
Реплики — это новые кластеры, которыми вы управляете как обычными кластерами. За каждую реплику чтения выставляется счет с учетом подготовленных вычислительных ресурсов (количество виртуальных ядер) и хранилища (ГБ/месяц). Затраты на вычисления и хранение для кластеров реплик совпадают с затратами на обычные кластеры.
Дополнительные сведения о создании реплик и управлении ими см. здесь.
Использование реплик чтения
Компонент "Реплика чтения" помогает повысить производительность и масштабируемость рабочих нагрузок с высокой интенсивностью чтения. Рабочие нагрузки чтения можно изолировать в реплики, направив рабочие нагрузки записи на главный сервер.
К типичным сценариям относится ситуация, когда рабочие нагрузки бизнес-аналитики и анализа используют реплику чтения в качестве источника данных для отчетов.
Так как реплики доступны только для чтения, они напрямую не снимают с исходной группы нагрузку, связанную с записью.
Рекомендации
Эта возможность позволяет снизить нагрузку обработки запросов в тех сценариях, в которых допустима задержка репликации. Она не поддерживает сценарии синхронной репликации, когда данные реплик должны быть всегда актуальными. Между обновлением главного сервера и реплики будет существенная задержка. Она может составлять минуты или даже часы в зависимости от конкретной рабочей нагрузки и сетевой задержки между главным сервером и репликой. Данные на реплике и на исходном сервере в итоге будут согласованы. Используйте этот компонент только для таких рабочих нагрузок, которым не страшна такая задержка.
Создание реплики
При запуске рабочего процесса создания реплики создается пустой кластер. Новый кластер заполняется данными, которые были в первичном кластере. Время создания зависит от объема данных в исходной группе и времени, прошедшего с момента последнего еженедельного полного резервного копирования. Время может варьироваться от нескольких минут до нескольких часов.
Реплика чтения использует физическую (а не логическую) репликацию PostgreSQL. По умолчанию используется потоковая репликация со слотами репликации. При необходимости для наверстывания используется доставка журналов.
Дополнительные сведения о создании реплики чтения на портале Azure см. здесь.
Подключение к реплике
Создаваемая реплика не наследует правила брандмауэра от первичного кластера. Эти правила следует настроить для каждой реплики отдельно.
Реплика наследует учетную запись администратора (citus
) из основного кластера.
Кроме того, в реплики чтения реплицируются все учетные записи пользователей. К реплике чтения можно подключиться только с учетными записями пользователей, которые доступны в исходной группе серверов.
Вы можете подключиться к узлу-координатору реплики, используя имя узла и действительную учетную запись пользователя, как в обычном кластере. Если сервер имеет имя my replica и на нем определен администратор с именем citus, для подключения к такому узлу-координатору можно использовать следующий запрос psql:
psql -h c-myreplica.12345678901234.postgres.cosmos.azure.com -U citus@myreplica -d postgres
При появлении запроса введите пароль для учетной записи пользователя.
Повышение уровня реплики до независимого кластера
Можно повысить уровень реплики до независимого кластера, доступного для чтения и записи. Реплика с повышенным уровнем не будет получать обновления от источника, и повышение уровня нельзя отменить. Реплики с повышенным уровнем могут иметь собственные реплики.
Существует два распространенных сценария повышения уровня реплики:
Аварийное восстановление. Если что-то не так с основным или целым регионом, можно открыть другой кластер для записи в качестве процедуры экстренной ситуации.
Миграция в другой регион. Если требуется перейти в другой регион, создайте реплику в новом регионе, дождитесь, пока данные будут восполнены, а затем повысьте уровень реплики. Чтобы избежать потенциальной потери данных при повышении уровня, возможно, потребуется отключить запись в исходном кластере после того, как реплика восполнит данные.
Вы можете увидеть, насколько далеко реплика поймала с помощью
replication_lag
метрики. Дополнительные сведения см. в разделе Метрики.
Рекомендации
В этом разделе приведены рекомендации по использованию компонента "Реплика чтения".
Новые реплики
Реплика чтения создается как новый кластер. Существующий кластер нельзя сделать в реплике. Невозможно создать реплику другой реплики чтения.
Конфигурация реплики
Реплики наследуют параметры вычислительных ресурсов, хранилища и рабочих узлов от своих исходных групп. Можно изменить некоторые параметры реплики, но не все. Например, можно изменить вычисление, правила брандмауэра для общего доступа и частные конечные точки для закрытого доступа. Невозможно изменить размер хранилища или число рабочих узлов.
Учитывайте, что реплики должны иметь достаточную производительность для обработки всех обновлений, поступающих от исходной группы. В частности, масштабирование вычислительных ресурсов в репликах следует выполнять одновременно с масштабированием исходной группы.
Правила брандмауэра и параметры конфигурации не наследуются репликой от главного сервера ни при создании реплики, ни в процессе работы.
Репликация между регионами
Реплики чтения можно создавать в регионе первичного кластера или в любом другом регионе, поддерживаемом Azure Cosmos DB for PostgreSQL. Ограничение в пять реплик на кластер во всех регионах означает, что можно использовать всего пять реплик, а не по пять в каждом регионе.
Следующие шаги
- Дополнительные сведения см. в статье Создание реплик чтения и управление ими с помощью портала Azure.