# Cloud PostgreSQL ## Назначение сервиса **Cloud PostgreSQL** - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости. PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений. В **Cloud PostgreSQL** все основные операции по управлению кластером выполняются автоматически. Сервис самостоятельно: - управляет ролями серверов базы данных (основной сервер и реплики); - отслеживает состояние узлов; - автоматически переключает основной сервер при сбоях. Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов: - **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах; - **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов; - **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами. Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера — все операции производятся через единую точку доступа. Для управления базами данных и пользователями доступен [web-интерфейс **pgAdmin**](./pgadmin.md), позволяющий выполнять администрирование непосредственно через браузер. ## Конфигурации кластера Сервис **Cloud PostgreSQL** поддерживает версии СУБД с 13 по 17 включительно. Кластер предоставляется в архитектуре Primary–Standby, которая обеспечивает: - синхронную репликацию данных; - повышенную отказоустойчивость. В рамках данной конфигурации создаётся кластер из виртуальных серверов, включающий: - **Primary** (основной сервер) — обязательный узел, на котором выполняются операции записи данных; - **Replica** (реплики) — дополнительные узлы (от 0 до 4), создаваемые по желанию пользователя. Реплики являются полноценными участниками кластера PostgreSQL и могут использоваться для выполнения запросов, не изменяющих данные (например, SELECT). В многоузловой конфигурации серверы кластера размещаются на разных физических хостах гипервизора, что повышает устойчивость сервиса к отказам оборудования. ## Режимы репликации По умолчанию фиксация изменений выполняется в **синхронном режиме**. Это означает, что операция записи считается завершённой только после того, как данные будут зафиксированы как на основном сервере, так и на одной из реплик. Если в кластере настроено несколько реплик, синхронный режим применяется только к одной из них. Остальные реплики работают в асинхронном режиме — изменения передаются на них без ожидания подтверждения. При необходимости режим репликации может быть изменён на полностью **асинхронный**. В этом случае изменения сначала фиксируются на основном сервере, а затем передаются на реплики с задержкой. ## Доступ к серверам и оптимизация соединений Прямой доступ к серверам кластера (например, по протоколу SSH) не предоставляется. Пользователь взаимодействует с базой данных исключительно через точки подключения, предоставленные сервисом. На каждом узле кластера установлен пулер соединений **PgBouncer**, который может использоваться для ускорения работы приложений за счёт оптимизации подключений к базе данных. ::: warning Примечание Использование PgBouncer не является обязательным - подключение возможно как напрямую к PostgreSQL, так и через пулер, а также одновременно обоими способами. ::: ## Возможности сервиса **Cloud PostgreSQL** предоставляет набор возможностей, позволяющих использовать PostgreSQL в облаке без необходимости самостоятельного администрирования инфраструктуры. Сервис обеспечивает: - автоматическое управление кластером PostgreSQL; - высокую доступность за счёт репликации и автоматического переключения primary-узла; - единую точку подключения к базе данных через прокси; - автоматическое переключение при отказе узлов кластера без вмешательства пользователя; - web-доступ к управлению базами данных и пользователями через pgAdmin; - совместимость со стандартными клиентскими инструментами PostgreSQL; - возможность установки расширений PostgreSQL в базу данных. ## Сценарии использования сервиса **Cloud PostgreSQL** подходит для использования в системах, где требуется надёжное хранение данных и упрощённое управление инфраструктурой базы данных. Сервис может применяться в следующих сценариях: - размещение production-баз данных с высокими требованиями к доступности; - использование PostgreSQL в микросервисной архитектуре с единой точкой подключения к базе данных; - хранение критичных данных с минимальным временем простоя при отказах инфраструктуры; - быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover; - администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера.