From d2b6e9fe705976a5149c3ed46dc9114ed19e034b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=B2=D1=87=D0=B5=D0=BD=D0=BA=D0=BE=20=D0=9B?= =?UTF-8?q?=D1=8E=D0=B4=D0=BC=D0=B8=D0=BB=D0=B0=20=D0=90=D0=BB=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D0=B5=D0=B5=D0=B2=D0=BD=D0=B0?= Date: Tue, 3 Mar 2026 12:13:33 +0300 Subject: [PATCH] PostgreSQL --- ...ехнических_параметров_кластера_Cloud_PostgreSQL.md | 173 ++++++++++++++++ .../Подключение к сервису Cloud PostgreSQL.md | 83 ++++++++ ...ава_и_возможности_пользователя_PostgreSQL.md | 192 ++++++++++++++++++ .../Техническое описание PostgreSQL.md | 68 +++++++ 4 files changed, 516 insertions(+) create mode 100644 src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md create mode 100644 src/PaaS/PostgreSQL/Подключение к сервису Cloud PostgreSQL.md create mode 100644 src/PaaS/PostgreSQL/Права_и_возможности_пользователя_PostgreSQL.md create mode 100644 src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md diff --git a/src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md b/src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md new file mode 100644 index 0000000..2137a23 --- /dev/null +++ b/src/PaaS/PostgreSQL/Описание_технических_параметров_кластера_Cloud_PostgreSQL.md @@ -0,0 +1,173 @@ +## О разделе + +Данный раздел описывает технические параметры кластера PostgreSQL и порядок их первичной конфигурации. + +Настройка указанных параметров выполняется администратором облачного провайдера на этапе развертывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке. + +Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями. + +----- +## Выбор типа и размера дискового хранилища + +Производительность базы данных напрямую зависит от скорости, с которой она может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика. + +_IOPS_ - количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее база данных обрабатывает запросы. +### Доступные типы хранилищ: + +| Название | Лимит IOPS | Время отклика | +| -------------- | ------------------ | ------------- | +| **Fast SAS** | до 2 IOPS на 1 ГБ | до 10 мс | +| **SSD** | до 5 IOPS на 1 ГБ | до 7 мс | +| **Fast SSD** | до 10 IOPS на 1 ГБ | до 5 мс | +| **Ultra NVMe** | до 25 IOPS на 1 ГБ | до 3 мс | + +**После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера PostgreSQL. Минимальный объем - 50 ГБ.** + +## Конфигурация вычислительных ресурсов + +В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер PostgreSQL. + +### Количество нод в кластере + +Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надежность и производительность чтения. Количество нод выбирается в диапазоне от 1 до 5. + +### Процессор (CPU) + +Процессор - это вычислительная мощность, которая выделяется каждой ноде кластера. Количество vCPU определяет, насколько быстро база данных сможет обрабатывать запросы, выполнять сложные операции (сортировки, объединения таблиц) и обслуживать одновременные подключения. Доступный диапазон выбора процессора: от 2 шт до 24 шт. + +### Оперативная память (RAM) + +Оперативная память - один из ключевых ресурсов для производительности. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. Доступный диапазон выбора оперативной памяти: от 4 ГБ до 768 ГБ. + +## Интернет + +При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру PostgreSQL из сети интернет. + +**Доступные варианты скорости:** +- 50 Мбит/с +- 100 Мбит/с +- 200 Мбит/с +- 300 Мбит/с +- 400 Мбит/с +- 500 Мбит/с +- 1000 Мбит/с (1 Гбит/с) + +*Для выбранного канала предоставляется статический белый IP-адрес.* + +----- +## Параметры конфигурации IPSEC + +Ниже приведены основные параметры, задаваемые при развертывании кластера PostgreSQL. Часть параметров определяется клиентом на этапе заказа услуги, часть - фиксирована и не подлежит изменению. + +### Данные о конфигурации IPSEC + +Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком. +### Версия IKE (Internet Key Exchange) + +Версия IKE выбирается из выпадающего списка, который содержит в себе два параметра - _v1_ и _v2_. Разница заключается в том, что _IKE v1_ - более ранняя версия протокола. +_IKE v2_ - более современная версия, обеспечивающая лучшую устойчивость соединения и более гибкую обработку ошибок. Рекомендуется использовать IKE v2, если оборудование заказчика это поддерживает. + +### Метод аутентификации + +Метод аутентификации выбирается вручную из выпадающего списка, который содержит два варианта: _PSK_ (Pre-Shared Key) и _Certificate_ (Сертификат). +- _PSK (Pre-Shared Key)_ - метод аутентификации, при котором используется заранее согласованный общий ключ. +- _Certificate_ - аутентификация с использованием цифровых сертификатов. + +------ +## Этап 1 - установка защищенного соединения + +### Hash + +Определяет алгоритм хэширования для защиты управляющего канала. Данный параметр заполняется вручную из выпадающего списка следующего содержания: +- _SHA 1_ - Формирует хэш длиной 160 бит, имеет коллизии (уязвимости), в современных системах считается устаревшим, используется только для совместимости со старым оборудованием. +- _SHA 2 - 256_ - Формирует хэш длиной 256 бит, существенно более устойчив к атакам, оптимальный баланс между безопасностью и производительностью, а также, на сегодняшний день, является стандартом по умолчанию в большинстве систем. +- _SHA 2 - 384_ - Длина хэша составляет 384 бита, имеет повышенную криптостойкость, требует больше вычислительных ресурсов, чем SHA-1 и SHA 2-256. Используется в средах с повышенными требованиями к безопасности. +- _SHA 2 - 512_ - Длина хэша составляет 512 бит, осуществляет самый высокий уровень стойкости из перечисленных, а также создает большую нагрузку на процессор. Обычно применяется в системах с повышенными требованиями к криптографии. + +### Шифрование + +Определяет алгоритм симметричного шифрования. Данный параметр заполняется вручную из выпадающего списка следующего содержания: +- _AES 128_ - имеет 128-битный ключ, обеспечивает быстрое шифрование, имеет достаточный уровень безопасности для большинства задач. +- _AES 256_ - имеет 256-битный ключ, обеспечивает более высокую криптостойкость, оказывает немного большую нагрузку на CPU. +- _AES GCM 128_ / _AES GCM 192_ / _AES GCM 256_ - данные алгоритмы совмещают шифрование и контроль целостности, обладают более современным режимом работы, считаются более эффективными по производительности, а также рекомендуются в современных конфигурациях. Разница между этими тремя алгоритмами лишь в длине ключа. + +### DH Group - группа Деффи Хеллмана + +Механизм Diffie-Hellman используется для безопасной генерации общего секретного ключа между сторонами туннеля без передачи этого ключа по сети. +Чем выше номер группы и длина ключа - тем выше криптографическая стойкость соединения. + +Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: +- _group 2_ +- _group 5_ +- _group 14_ +- _group 15_ +- _group 16_ +- _group 19_ +- _group 20_ +- _group 21_ +### IKE Mode (только для IKEv1) + +Параметр IKE Mode определяет способ установления соединения на этапе 1 при использовании протокола IKEv1. + +Доступны два режима: _Main_ и _Aggressive_. Они отличаются количеством сообщений при установке соединения и уровнем защиты идентификационных данных. +- Main Mode - является стандартным и более безопасным режимом работы IKEv1. +- Aggressive Mode - упрощённый и ускоренный режим установления соединения. (более низкий уровень защиты данных) + +### Время жизни + +Определяет, как долго действуют согласованные ключи в рамках первой фазы. +- Рекомендуемое значение: 86400 секунд (24 часа). +- После истечения времени выполняется повторная генерация ключей. + +------ +## Этап 2 - передача данных + +Этап 2 IPsec-соединения отвечает за шифрование и защиту пользовательского трафика после того, как защищённый канал был установлен на этапе 1. Этот этап регулирует передачу данных между сторонами через безопасный туннель, который обеспечивает конфиденциальность и целостность данных. +## Hash + +Аналогично этапу 1, параметр Hash используется для защиты целостности передаваемых данных. Он обеспечивает проверку, что данные не были изменены при передаче. Содержит такой же перечень элементов для выбора: +- _SHA 1_ +- _SHA 2 - 256_ +- _SHA 2 - 384_ +- _SHA 2 - 512_ + +## Шифрование + +Этап 2 отвечает за шифрование пользовательского трафика. Это важнейший параметр, который защищает данные при их передаче по сети. Доступны следующие алгоритмы: +- _AES 128_ +- _AES 256_ +- _AES GCM 128_ +- _AES GCM 192_ +- _AES GCM 256_ +### PFS + +_Enable perfect forward secrecy (PFS)_ - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа DH будет такая же как и на 1-й фазе. +Данный параметр представлен в виде чекбокса. При его включении: + +- На этапе 2 выполняется дополнительный обмен ключами Diffie-Hellman. +- Для каждой новой IPsec-сессии формируется новый независимый криптографический секрет. +- Ключи шифрования пользовательского трафика не зависят от ключей этапа 1. + +### DH Group - группа Деффи Хеллмана + +Группа DH определяет параметры обмена ключами между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена. + +Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: +- _group 2_ +- _group 5_ +- _group 14_ +- _group 15_ +- _group 16_ +- _group 19_ +- _group 20_ +- _group 21_ + +### Время жизни (в секундах) + +Определяет, как долго действуют согласованные ключи в рамках второй фазы. + +- Рекомендуемое значение: 3600 секунд (1 час). +- После истечения времени выполняется повторная генерация ключей. +### Префиксы локальной сети заказчика + +Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через IPsec-туннель. Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/Подключение к сервису Cloud PostgreSQL.md b/src/PaaS/PostgreSQL/Подключение к сервису Cloud PostgreSQL.md new file mode 100644 index 0000000..66ea1aa --- /dev/null +++ b/src/PaaS/PostgreSQL/Подключение к сервису Cloud PostgreSQL.md @@ -0,0 +1,83 @@ +## Общая схема подключения + +Доступ к кластеру PostgreSQL осуществляется через прокси. Клиентские подключения принимаются прокси, который маршрутизирует трафик к соответствующим узлам кластера (master или replica) в зависимости от выбранного порта. Прямое подключение к узлам базы данных не используется. + +Подключение к кластеру Cloud PostgreSQL осуществляется через прокси-сервер. +Прокси является единой точкой входа для всех клиентских подключений и принимает входящие соединения от приложений, административных инструментов и пользователей. В зависимости от выбранного порта прокси автоматически направляет трафик: +- на активный primary-узел - для операций чтения и записи +- на реплики - для операций только чтения + +Прямое подключение к отдельным узлам базы данных не используется и не предоставляется. Взаимодействие с кластером всегда выполняется через прокси-сервер. + +------ +## Подключение к базе данных + +Для подключения к базе данных необходимо использовать IP-адрес прокси-сервера, который предоставляется после заказа услуги. + +Этот IP-адрес является единой точкой входа для работы с кластером PostgreSQL. Все подключения к базе данных - как из приложений, так и из клиентских инструментов - выполняются через него. + +Использование других IP-адресов или попытка прямого подключения к отдельным узлам кластера не предусмотрены. + +------ +## Доступные порты + +Для разных типов нагрузки используются разные порты: + +|Порт|Назначение| +|---|---| +|5432|Primary (чтение и запись)| +|15432|Replica (только чтение)| +|6432|Primary через PgBouncer (чтение и запись)| +|16432|Replica через PgBouncer (только чтение)| +### Особенности работы портов + +- Порты для чтения и записи (5432, 6432) всегда направляют трафик на активный primary-узел. При смене primary переключение происходит автоматически. +- Порты только для чтения (15432, 16432) направляют трафик на активные реплики. Если реплик несколько, нагрузка распределяется между ними по принципу round-robin. +- Если в кластере отсутствуют реплики, порты для чтения не используются - подключение по ним не устанавливается. +### Рекомендации по выбору порта + +- Для OLTP-нагрузки и большого количества соединений рекомендуется использовать порты PgBouncer (6432 или 16432). +- Для операций записи используйте master-порты (5432 или 6432). +- Для read-only запросов можно использовать replica-порты (15432 или 16432). + +------ +## Доступ к pgAdmin + +Для администрирования базы данных используется web-интерфейс pgAdmin. +Доступ осуществляется по DNS-имени, которое нужно прописать локально в инфраструктуре откуда будет происходить доступ к web-интерфейсу сервиса: + `10.X.X.4 .cloud-pg.dfcloud.ru` + +После добавления записи pgAdmin будет доступен по адресу: + `https://.cloud-pg.dfcloud.ru` + +Авторизация выполняется с использованием учётных данных, предоставленных вместе с доступом к сервису. + +### Важно + +- Подключение к базе данных возможно только через указанный прокси-IP. +- В интерфейсе pgAdmin уже добавлен сервер базы данных, созданный для данной инсталляции. Для подключения требуется ввести пароль от учётной записи базы данных. +- pgAdmin предназначен для администрирования и не рекомендуется для выполнения тяжёлых или длительных запросов в production-среде. + +------ +## Примеры подключения к PostgreSQL + +Подключение к primary: + `psql -h 10.X.X.4 -p 5432 -U -d ` + +Подключение через PgBouncer: + `psql -h 10.X.X.4 -p 6432 -U -d ` +### Подключение через DBeaver / DataGrip + +При создании подключения укажите: +- Host: 10.X.X.4 +- Port: 5432 или 6432 +- Database: `` +- User / Password: согласно выданным доступам +- Тип подключения: PostgreSQL +### Пример строки подключения + +Primary: + `postgresql://:@10.X.X.4:5432/` + +Через PgBouncer: + `postgresql://:@10.X.X.4:6432/` diff --git a/src/PaaS/PostgreSQL/Права_и_возможности_пользователя_PostgreSQL.md b/src/PaaS/PostgreSQL/Права_и_возможности_пользователя_PostgreSQL.md new file mode 100644 index 0000000..3903fcb --- /dev/null +++ b/src/PaaS/PostgreSQL/Права_и_возможности_пользователя_PostgreSQL.md @@ -0,0 +1,192 @@ +Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса Cloud PostgreSQL, а также перечень административных операций, доступных ему для самостоятельного выполнения. + +При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра PostgreSQL. + +------ +## Общая информация о пользователе + +При инициализации сервиса автоматически создаётся пользователь: + +```nginx +client +``` + +Данный пользователь является основной учётной записью для административной работы в рамках предоставленного экземпляра PostgreSQL. Он предназначен для самостоятельного управления базами данных, ролями и правами доступа в пределах выданных привилегий. + +------ +## Выданные права и ограничения + +Пользователю `client` назначается набор атрибутов и привилегий, позволяющих выполнять административные операции в рамках своего экземпляра базы данных. +### Атрибуты роли + +Пользователь создаётся со следующими атрибутами: +- `CREATEDB` — разрешено создание и удаление баз данных; +- `CREATEROLE` — разрешено создание ролей и пользователей, а также управление их. + +Атрибут `SUPERUSER` пользователю не предоставляется. Соответственно, доступ к системным операциям уровня кластера и настройкам сервера отсутствует. +### Права на системную базу postgres: + +К стандартной базе данных `postgres` пользователю предоставлено только право подключения: +- `CONNECT` +Иные привилегии (создание объектов, изменение схем и т.д.) на данную базу не выдаются. +### Мониторинг и системные представления: + +Для выполнения базовых задач мониторинга пользователю дополнительно предоставлены: +- членство в роли `pg_monitor`; +- право `SELECT` на системное представление: +```sql +pg_catalog.pg_stat_replication +``` + +Доступ к системной информации предоставляется исключительно в режиме чтения. Изменение системных представлений и параметров сервера недоступно. + +------ +## Обязательная смена пароля + +После первого подключения к базе данных пользователь `client` обязан выполнить смену пароля. +Смена пароля может быть выполнена: +- в открытом виде (с передачей нового значения пароля); +- с указанием заранее сгенерированного хэша. + +На сервере используется алгоритм шифрования паролей: + +``` +scram-sha-256 +``` + +При использовании SCRAM применяется следующий формат хэша: + +``` +$:$: +``` + +### Пример смены пароля в открытом виде + +```sql +ALTER USER client WITH PASSWORD 'new_strong_password'; +``` + +### Пример смены пароля с указанием хэша + +```sql +ALTER USER client WITH ENCRYPTED PASSWORD '$4096:...'; +``` + +Рекомендуется использовать сложный уникальный пароль, соответствующий требованиям информационной безопасности, и хранить его в защищённом хранилище. + +------ +## Создание новой базы данных + +Пользователь `client` имеет право создавать новые базы данных в рамках своего экземпляра PostgreSQL. +### Пример создания базы данных + +Для создания базы данных используется стандартная команда: + +```sql +CREATE DATABASE app_db; +``` + +Если необходимо назначить владельца базы данных, можно указать соответствующего пользователя. По умолчанию владельцем создаваемой базы данных является пользователь, который её создает. +### Пример создания базы данных с указанием владельца + +```sql +CREATE DATABASE app_db OWNER client; +``` + +В этом примере база данных `app_db` будет принадлежать пользователю `client`. Пользователь, указанный как владелец, будет иметь полный контроль над базой данных, включая права на её удаление и изменение. + +------ +## Создание пользователей и ролей + +Пользователь `client` имеет право создавать новые роли и пользователей для приложений, а также управлять их правами доступа. +### Создание роли без логина + +Если требуется создать роль, которая не будет иметь возможности входа в базу данных (например, для организации прав доступа), можно использовать команду: + +```sql +CREATE ROLE app_role; +``` +### Создание пользователя с паролем + +Для создания пользователя с паролем используется команда: + +```sql +CREATE USER app_user WITH PASSWORD 'app_password'; +``` + +После этого новый пользователь `app_user` будет иметь возможность входа в базу данных, используя указанный пароль. +### Назначение роли пользователю + +Для назначения роли пользователю используется команда `GRANT`. Это позволяет управлять правами пользователя в рамках определённой роли: + +```sql +GRANT app_role TO app_user; +``` + +После выполнения этой команды пользователь `app_user` станет членом роли `app_role`, и будет наследовать все права, связанные с этой ролью. +### Передача владельца базы данных + +Если необходимо передать право владения базой данных другому пользователю, это можно сделать с помощью следующей команды: + +```sql +ALTER DATABASE app_db OWNER TO app_user; +``` + +Теперь база данных `app_db` будет принадлежать пользователю `app_user`, и он будет иметь полный контроль над ней. +### Управление правами доступа + +После создания пользователей и ролей необходимо назначить им соответствующие права доступа. +### Выдача прав на подключение к базе данных + +Для того чтобы пользователь мог подключаться к базе данных, нужно предоставить ему соответствующие права: + +```sql +GRANT CONNECT ON DATABASE app_db TO app_user; +``` + +Эта команда разрешает пользователю `app_user` подключаться к базе данных `app_db`. + +### Права на схему public + +Для предоставления пользователю прав на использование схемы `public` можно выполнить следующую команду: + +```sql +GRANT USAGE, CREATE ON SCHEMA public TO app_user; +``` + +Эти права позволяют пользователю `app_user` использовать объекты в схеме `public`, а также создавать новые объекты внутри неё. +### Права на существующие таблицы + +Чтобы предоставить пользователю доступ к существующим таблицам в схеме `public`, можно использовать команду: + +```sql +GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user; +``` + +Эта команда позволяет пользователю `app_user` выполнять операции чтения, вставки, обновления и удаления данных в существующих таблицах схемы `public`. +### Права на будущие таблицы + +Если необходимо автоматически предоставить пользователю права на новые таблицы, создаваемые в схеме `public`, используйте команду: + +```sql +ALTER DEFAULT PRIVILEGES IN SCHEMA public +GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user; +``` + +Эта команда обеспечит, что все будущие таблицы, создаваемые в схеме `public`, будут автоматически иметь права для пользователя `app_user` на чтение, вставку, обновление и удаление данных. + +------ +## Мониторинг репликации + +Пользователь `client` имеет доступ к системным представлениям для мониторинга состояния репликации в кластере PostgreSQL. +### Просмотр состояния репликации + +Для того чтобы просмотреть текущий статус репликации, пользователь может выполнить запрос к системному представлению: + +``` SQL +SELECT * FROM pg_stat_replication; +``` +Этот запрос возвращает информацию о всех репликах, подключённых к основному (primary) серверу. +### Ограничения доступа + +Пользователь `client` имеет доступ к данным в представлении `pg_stat_replication` только в режиме **read-only**. Это означает, что он может просматривать состояние репликации, но не может изменять или вмешиваться в процесс репликации. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md b/src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md new file mode 100644 index 0000000..2e8cf67 --- /dev/null +++ b/src/PaaS/PostgreSQL/Техническое описание PostgreSQL.md @@ -0,0 +1,68 @@ +## Cloud PostgreSQL + +## О сервисе + +Cloud PostgreSQL - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости. + +PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений. + +В Cloud PostgreSQL все основные операции по управлению кластером выполняются автоматически. +Сервис самостоятельно: +- управляет ролями серверов базы данных (основной сервер и реплики) +- отслеживает состояние узлов +- автоматически переключает основной сервер при сбоях + +Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов: +- **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах +- **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов +- **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами + +Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера. +Для управления базами данных и пользователями в сервисе доступен web-интерфейс **pgAdmin**, который позволяет выполнять администрирование через браузер. + +--- +## Конфигурации кластера + +Сервис Cloud PostgreSQL поддерживает версии PostgreSQL с 13 по 17. + +Сервис предоставляется в виде кластера базы данных в конфигурации Primary–Standby, которая обеспечивает репликацию данных и повышенную отказоустойчивость. +В рамках данной конфигурации создаётся кластер из виртуальных серверов, включающий: +- Primary (основной сервер) - обязательный узел, на котором выполняются операции записи данных +- Replica (реплики) - дополнительные узлы, которые создаются по желанию пользователя + +Количество реплик может составлять от 0 до 4. Реплики являются частью кластера PostgreSQL и могут использоваться для выполнения запросов, не изменяющих данные (например, SELECT). В многонодовой конфигурации серверы кластера размещаются на разных хостах гипервизора, что повышает устойчивость сервиса к отказам. + +По умолчанию фиксация изменений выполняется в синхронном режиме репликации. Это означает, что операция записи считается завершённой только после того, как данные будут зафиксированы как на основном сервере, так и на реплике. +При наличии нескольких реплик синхронный режим применяется только к одной из них, для остальных используется асинхронный режим. + +При необходимости режим репликации может быть изменён на асинхронный. В этом случае изменения сначала фиксируются на основном сервере, а затем передаются на реплики с задержкой, без ожидания подтверждения от них. + +Прямой доступ к серверам кластера (например, по протоколу SSH) не предоставляется. Пользователь взаимодействует с базой данных исключительно через предоставленные сервисом точки подключения. + +На каждом узле кластера установлен пулер соединений PgBouncer, который может использоваться для ускорения работы приложений за счёт оптимизации подключений к базе данных. Использование PgBouncer не является обязательным - подключение возможно как напрямую к PostgreSQL, так и через пулер, а также одновременно обоими способами. + +--- +## Возможности сервиса + +Cloud PostgreSQL предоставляет набор возможностей, позволяющих использовать PostgreSQL в облаке без необходимости самостоятельного администрирования инфраструктуры. + +Сервис обеспечивает: +- автоматическое управление кластером PostgreSQL +- высокую доступность за счёт репликации и автоматического переключения primary-узла +- единую точку подключения к базе данных через прокси +- автоматическое переключение при отказе узлов кластера без вмешательства пользователя +- web-доступ к управлению базами данных и пользователями через pgAdmin +- совместимость со стандартными клиентскими инструментами PostgreSQL +- возможность установки расширений PostgreSQL в базу данных + +--- +## Сценарии использования сервиса + +Cloud PostgreSQL подходит для использования в системах, где требуется надёжное хранение данных и упрощённое управление инфраструктурой базы данных. + +Сервис может применяться в следующих сценариях: +- размещение production-баз данных с высокими требованиями к доступности +- использование PostgreSQL в микросервисной архитектуре с единой точкой подключения к базе данных +- хранение критичных данных с минимальным временем простоя при отказах инфраструктуры +- быстрое развёртывание PostgreSQL-кластера без необходимости ручной настройки репликации и failover +- администрирование баз данных через web-интерфейс без прямого доступа к серверам кластера \ No newline at end of file