diff --git a/src/.vitepress/config.mts b/src/.vitepress/config.mts index 5529249..7cc43eb 100644 --- a/src/.vitepress/config.mts +++ b/src/.vitepress/config.mts @@ -159,6 +159,24 @@ export default defineConfig({ {text: 'Бесплатный период', link: '/start/trial.md'}, {text: 'Платное использование', link: '/start/organization.md'}, ], + + '/PaaS/': [ + { + text: 'Начало работы в Cloud PostgreSQL', link: '/PaaS/index.md', + }, + { text: 'Cloud PostgreSQL', link: '/PaaS/Postgresql-index.md', + collapsed: true, + items: [ + {text: 'Обзор сервиса', link: '/PaaS/postgresql/about.md'}, + {text: 'Описание раздела', link: '/PaaS/postgresql/cluster_parameter.md'}, + {text: 'Общая схема подключения', link: '/PaaS/postgresql/connection.md'}, + {text: 'Создание сервиса', link: '/PaaS/postgresql/user_capabilities.md'}, + ], + }, + {text: 'Веб-интерфейс pgAdmin', link: '/PaaS/pgadmin.md'}, + {text: 'Веб-интерфейс Grafana', link: '/PaaS/grafana.md'}, + ], + // '/billing/': [ // ], @@ -299,7 +317,7 @@ export default defineConfig({ { text: 'Управление ВМ', link: '/compute/compute-how-to/compute-servers-manage.md' }, ], }, -{ text: 'Диски', link: '/compute/compute-how-to/compute-disks/compute-disk-index.md', + { text: 'Диски', link: '/compute/compute-how-to/compute-disks/compute-disk-index.md', collapsed: true, items: [ { text: 'Обзор', link: '/compute/compute-how-to/compute-disks/compute-disk-about.md' }, diff --git a/src/PaaS/PostgreSQL/grafana.md b/src/PaaS/PostgreSQL/grafana.md deleted file mode 100644 index 6717787..0000000 --- a/src/PaaS/PostgreSQL/grafana.md +++ /dev/null @@ -1,98 +0,0 @@ - -# Метрики -## Инструкция по подключению к Grafana. -Для того, чтобы получить доступ к метрикам кластера, предварительно необходимо запросить доступы. Когда доступы будут получены, появится возможность перейти в систему мониторинга. -Ссылка для входа - https://metrics.dfcloud.ru. - -При переходе по ссылке откроется главная страница Grafana. Для того чтобы найти нужные метрики, необходимо проделать следующий путь: -1. Нажать на кнопку "Dashboards", которая располагается в левом боковом меню. -2. В открывшемся списке всех имеющихся дашбордов необходимо выбрать папку "Cloud PostgreSQL". -3. Внутри будет элемент **Cloud PostgreSQL** - это именно тот дашборд, который нам нужен. -Перейдя на дашборд Cloud PostgreSQL, открываются все метрики кластера. - -В верхней части дашборда расположены все селекторы, с помощью которых можно управлять отображаемыми данными: -- **InstallationID** - выбор одного из кластеров. Если у клиента несколько кластеров PostgreSQL, он может выбирать тот кластер, по которому хочет посмотреть информацию; -- **Cluster node name** - выбор конкретной ноды кластера. Значения графиков меняются в зависимости от того, какой хост выбран. Этот селектор влияет на все графики, кроме блока Patroni; -- **Database** - выбор базы данных, по которой можно смотреть показатели метрик; -- **Lock table** - данный селектор применим не для всех графиков. С его помощью можно выбирать, какой тип блокировки использовать для отображения информации; - -## Блок метрик PostgreSQL - -Данный блок отображает ключевые параметры конфигурации и текущие показатели работы экземпляра PostgreSQL. - -| Наименование метрики | Описание метрики | -| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Version** | Показывает текущую версию PostgreSQL, установленную на кластере. | -| **Current fetch data** | Объем данных, извлеченных из базы за текущий период (операции чтения). | -| **Current insert data** | Объем данных, вставленных в базу (операции записи новых данных). | -| **Current update data** | Объем данных, обновленных в базе. | -| **Seq Page Cost** | Стоимость последовательного чтения страницы данных. Влияет на выбор плана запроса: чем выше значение, тем реже оптимизатор будет выбирать последовательное сканирование таблиц. | -| **Random Page Cost** | Стоимость чтения случайной страницы данных. Низкое значение говорит о том, что в системе используются быстрые диски, и оптимизатор будет чаще выбирать доступ по индексам. | -| **Max Connections** | Максимальное количество одновременных подключений к базе данных, разрешенное на сервере. | -| **Shared Buffers** | Объем оперативной памяти, выделенный под кэш данных PostgreSQL. Здесь хранятся часто используемые данные для ускорения доступа к ним. | -| **Effective Cache** | Предполагаемый размер системного кэша файлов. Используется оптимизатором для оценки вероятности нахождения данных в кэше операционной системы. | -| **Maintenance Work Mem** | Объем памяти для выполнения операций обслуживания. | -| **Work Mem** | Объем памяти, выделяемый для внутренних сортировок и хеш-таблиц при выполнении запросов (на каждую операцию). | -| **Max WAL Size** | Максимальный размер журнала предзаписи, после достижения которого запускается процесс контрольной точки (checkpoint). | -| **Max Worker Processes** | Максимальное количество фоновых процессов, которые могут быть запущены в системе. | -| **Max Parallel Workers** | Максимальное количество параллельных процессов, которые могут быть задействованы при выполнении одного запроса. | - -## Блок метрик Database Stats - -Данный блок метрик отражает текущую нагрузку и состояние баз данных в кластере PostgreSQL. Эти метрики позволяют оценить, насколько эффективно работает база данных, отследить скачки нагрузки и своевременно среагировать на потенциальные проблемы до того, как они повлияют на работу приложений. - -| Наименование метрики | Описание метрики | -| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **Average CPU Usage** | Показывает время, затраченное на выполнение пользовательских и системных задач, а также, насколько интенсивно используются вычислительные ресурсы сервера базы данных. | -| **Average Memory Usage** | Средний объем оперативной памяти, используемой процессами PostgreSQL за 5-минутные интервалы. Показывает, сколько памяти потребляет база данных в процессе работы. | -| **Open File Descriptors** | Количество открытых файловых дескрипторов процессами PostgreSQL. Метрика показывает среднее (Mean), последнее (Last), максимальное (Max) и минимальное (Min) значение за интервал. | -| **Active sessions** | Показывает, сколько в данный момент выполняется запросов к PostgreSQL. Метрика показывает среднее (Mean), последнее (Last), максимальное (Max) значение. | -| **Transcations** | Количество транзакций в базах данных кластера. Метрика разделена на два типа операций: commits (успешно завершенные транзакции) и rollbacks (откаченные транзакции). | -| **Update data** | Объем данных, обновленных в базах данных кластера. Показывает, сколько данных было изменено в результате выполнения операций UPDATE. | -| **Fetch data (SELECT)** | Объем данных, извлеченных из базы с помощью запросов SELECT. Показывает, сколько данных было считано из базы в результате операций чтения. | -| **Insert data** | Объем данных, вставленных в базы данных кластера. Показывает, сколько данных было добавлено в результате выполнения операций INSERT. | -| **Lock tables** | Количество блокировок таблиц в базах данных кластера. Показывает, сколько раз таблицы были заблокированы для выполнения операций.
AccessShareLock - это блокировка, которая возникает, когда кто-то читает данные из таблицы (делает SELECT). Данная блокировка не мешает операциям чтения, но не дает удалить в этот момент таблицу или изменить ее структуру. | -| **Return data** | Объем данных, возвращаемых клиенту в результате выполнения запросов. Показывает, сколько данных было отправлено обратно клиенту после обработки запросов в базе. | -| **Idle sessions** | Количество бездействующих сессий подключения к базе данных. Показывает, сколько открытых подключений в данный момент не выполняют никаких запросов и просто ждут. | -| **Delete data** | Объем данных, удаленных из базы данных в результате выполнения операций DELETE. Показывает, сколько данных было удалено из таблиц. | -| **Cache Hit Rate** | Показывает процент запросов к данным, которые были удовлетворены из кэша (оперативной памяти), без обращения к диску. Показывает, насколько эффективно используется кэш PostgreSQL. | -| **Buffers (bgwriter)** | Метрика, показывающая активность фонового процесса записи, который занимается синхронизацией данных из оперативной памяти на диск. | -| **Conflicts/Deadlocks** | Метрика, отслеживающая две проблемы при работе с базой данных: конфликты восстановления и взаимоблокировки. | -| **Temp File (Bytes)** | Объем данных, записанных во временные файлы при выполнении запросов в базах данных. PostgreSQL создает временные файлы на диске, когда для выполнения запроса не хватает оперативной памяти. | -| **Checkpoint Stats** | Метрика, показывающая время, затрачиваемое на выполнение checkpoints в PostgreSQL, где:
- write_time - время, затраченное на запись данных на диск во время checkpoint (сколько миллисекунд ушло на запись файлов).
- sync_time - время, затраченное на синхронизацию файлов с диском (чтобы данные гарантированно сохранились). | - -## Блок метрик Patroni - -Данный блок метрик отображает состояние и конфигурацию кластера PostgreSQL под управлением Patroni. Эти метрики позволяют контролировать отказоустойчивость кластера, отслеживать переключения мастера и убеждаться, что репликация работает штатно. - -| Наименование метрики | Описание метрики | -| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Patroni Leader** | Метрика, которая показывает, какая нода в кластере PostgreSQL в данный момент является master-сервером, принимающим запросы на запись. | -| **Patroni Replica** | Метрика, которая показывает, какие узлы кластера PostgreSQL в данный момент выполняют роль реплики. | -| **Sync Standby** | Метрика, которая показывает, какая из реплик в кластере PostgreSQL назначена синхронной. | -| **PostgreSQL WAL Replay** | Метрика, которая показывает, включена ли на узлах кластера синхронизация данных через WAL. | -| **PostgreSQL Pending Restart** | Метрика, которая показывает, требуется ли перезагрузка PostgreSQL на узлах кластера после изменения конфигурационных параметров. | -| **Patroni Primary Node** | Метрика, которая показывает, какой узел в кластере PostgreSQL в данный момент является основным и принимает запросы на запись. | -| **Patroni Secondary Nodes** | Метрика, которая показывает, какие узлы кластера PostgreSQL в определенные моменты времени выполняли роль реплик. | -| **Replicas Received WAL Location** | Метрика, показывающая объем журналов предзаписи (WAL), полученных каждой репликой кластера. | -| **Primary WAL Location** | Метрика, показывающая объем журналов предзаписи (WAL), на основном сервере кластера PostgreSQL. | -| **Replicas Replayed WAL Location** | Метрика, показывающая объем журналов предзаписи (WAL), которые были не просто получены, а уже применены на репликах кластера. | -| **WAL Replay Paused** | Метрика, которая отслеживает, не приостановлен ли процесс применения WAL-журналов на узлах кластера. Если передача или применение WAL-файлов останавливается, на графике происходит скачок. | - -## Блок метрик Hosts - -Блок Hosts управляется селектором **Cluster node name**. Данный блок метрик отображает состояние и ресурсы серверов, на которых развернут кластер PostgreSQL. Эти метрики позволяют оценить, хватает ли серверу ресурсов для текущей нагрузки, и своевременно обнаружить проблемы с производительностью или нехваткой места на дисках. - -| Наименование метрики | Описание метрики | -| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **CPU Busy** | Метрика, показывающая общую загруженность всех процессорных ядер на сервере, где работает PostgreSQL. | -| **RAM Used** | Метрика, показывающая процент оперативной памяти, который занят на сервере всеми процессами. | -| **CPU Cores** | Метрика, показывающая общее количество процессорных ядер, доступных на сервере, где работает PostgreSQL. | -| **RAM Total** | Метрика, показывающая общий объем оперативной памяти, установленный на сервере. | -| **DB Disk Total** | Метрика, показывающая общий объем дискового пространства, выделенного для хранения данных базы данных PostgreSQL на сервере. | -| **CPU Basic** | Метрика, которая показывает детальную разбивку загрузки процессора по типам выполняемых задач. Она позволяет увидеть, на что именно тратится процессорное время на сервере. | -| **Memory Basic** | Метрика, которая показывает детальную разбивку использования оперативной памяти на сервере, а также информацию о SWAP. | -| **Disk IOps** | Метрика, показывающая количество операций чтения и записи, выполняемых на диске сервера в секунду. | -| **Disk Space Used Basic** | Метрика, показывающая процент занятого дискового пространства на всех подключенных файловых системах сервера. | -| **Disk R/W Data** | Показывает объем данных в байтах, читаемых с диска и записываемых на диск в секунду. | -| **Filesystem space available** | Метрика, показывающая объем свободного дискового пространства на файловой системе сервера. | diff --git a/src/PaaS/grafana.md b/src/PaaS/grafana.md new file mode 100644 index 0000000..d265790 --- /dev/null +++ b/src/PaaS/grafana.md @@ -0,0 +1,106 @@ +# Grafana + +## Инструкция по работе с метриками + +Доступ к метрикам кластера предоставляется после запроса соответствующих прав. После получения доступа можно перейти в систему мониторинга по ссылке: + +https://metrics.dfcloud.ru. + +Открывается главная страница Grafana. Для просмотра метрик кластера PostgreSQL выполните следующие шаги: + +1. В левом боковом меню нажмите **Dashboard**; +2. В списке доступных дашбордов выберите **папку Cloud PostgreSQL**; +3. Внутри папки выберите **дашборд Cloud PostgreSQL** — в нём отображаются все метрики кластера. + +## Управление отображаемыми данными + +В верхней части дашборда доступны селекторы для настройки отображения: + +- **InstallationID** - выбор одного опеределенного кластера; +- **Cluster node name** - выбор конкретного нода кластера, в котором значения графиков меняются в зависимости от выбранного хоста (селектор влияет на все графики, кроме блока Patroni); +- **Database** - выбор базы данных, по которым отображаются метрики; +- **Lock table** - выбор типа блокировки для отображения (применим не для всех графиков). + +## Метрики PostgreSQL + +Метрики отображают ключевые параметры конфигурации и текущие показатели работы экземпляра PostgreSQL. + +| Наименование | Описание | Примечание | +|---------------------|-----------------------------------------------------------------------------------------------------------------|------------| +|Version | Текущая версия PostgreSQL, установленную на кластере || +|Current fetch data | Объем данных, извлеченных из базы за текущий период | Для операции чтения | +|Current insert data | Объем данных, вставленных в базу | Для операции записи новых данных | +|Current update data | Объем данных, обновленных в базе || +|Seq Page Cost | Стоимость последовательного чтения страницы данных | Влияет на выбор плана запроса: чем выше значение, тем реже оптимизатор будет выбирать последовательное сканирование таблиц| +|Random Page Cost | Стоимость чтения случайной страницы данных | Низкое значение говорит о том, что в системе используются быстрые диски, и оптимизатор будет чаще выбирать доступ по индексам| +|Max Connections | Максимальное количество одновременных подключений к базе данных, разрешенное на сервере || +|Shared Buffers | Объем оперативной памяти, выделенный под кэш данных PostgreSQL | Хранит часто используемые данные для ускорения доступа к ним| +|Effective Cache | Предполагаемый размер системного кэша файлов | Используется оптимизатором, для оценки вероятности нахождения данных в кэше операционной системы| +|Maintenance Work Mem | Объем памяти для выполнения операций обслуживания. || +|Work Mem | Объем памяти, выделяемый для внутренних сортировок и хеш-таблиц при выполнении запросов | Для каждой операции | +|Max WAL Size | Максимальный размер журнала предзаписи, после достижения которого запускается процесс контрольной точки |checkpoint| +|Max Worker Processes | Максимальное количество фоновых процессов, которые могут быть запущены в системе. || +|Max Parallel Workers | Максимальное количество параллельных процессов, которые могут быть задействованы при выполнении одного запроса. || + +## Метрики Database Stats + +Метрики отображают текущую нагрузку и состояние баз данных в кластере PostgreSQL. Данные метрики позволяют: +- оценить эффективность работы баз данных; +- отследить скачки нагрузки; +- своевременно среагировать на потенциальные проблемы до того, как они повлияют на работу приложений. + +| Наименование | Описание | +|-----------------------| -------------------| +| Average CPU Usage | Показывает время, затраченное на выполнение пользовательских и системных задач, а также, насколько интенсивно используются вычислительные ресурсы сервера базы данных. | +| Average Memory Usage | Средний объем оперативной памяти, используемой процессами PostgreSQL за 5-минутные интервалы. Показывает, сколько памяти потребляет база данных в процессе работы. | +| Open File Descriptors | Количество открытых файловых дескрипторов процессами PostgreSQL. Метрика показывает среднее (Mean), последнее (Last), максимальное (Max) и минимальное (Min) значение за интервал. | +| Active sessions | Показывает, сколько в данный момент выполняется запросов к PostgreSQL. Метрика показывает среднее (Mean), последнее (Last), максимальное (Max) значение. | +| Transcations | Количество транзакций в базах данных кластера. Метрика разделена на два типа операций: commits (успешно завершенные транзакции) и rollbacks (откаченные транзакции). | +| Update data | Объем данных, обновленных в базах данных кластера. Показывает, сколько данных было изменено в результате выполнения операций UPDATE. | +| Fetch data (SELECT) | Объем данных, извлеченных из базы с помощью запросов SELECT. Показывает, сколько данных было считано из базы в результате операций чтения. | +| Insert data | Объем данных, вставленных в базы данных кластера. Показывает, сколько данных было добавлено в результате выполнения операций INSERT. | +| Lock tables | Количество блокировок таблиц в базах данных кластера. Показывает, сколько раз таблицы были заблокированы для выполнения операций.
AccessShareLock - это блокировка, которая возникает, когда кто-то читает данные из таблицы (делает SELECT). Данная блокировка не мешает операциям чтения, но не дает удалить в этот момент таблицу или изменить ее структуру. | +| Return data | Объем данных, возвращаемых клиенту в результате выполнения запросов. Показывает, сколько данных было отправлено обратно клиенту после обработки запросов в базе. | +| Idle sessions | Количество бездействующих сессий подключения к базе данных. Показывает, сколько открытых подключений в данный момент не выполняют никаких запросов и просто ждут. | +| Delete data | Объем данных, удаленных из базы данных в результате выполнения операций DELETE. Показывает, сколько данных было удалено из таблиц. | +| Cache Hit Rate | Показывает процент запросов к данным, которые были удовлетворены из кэша (оперативной памяти), без обращения к диску. Показывает, насколько эффективно используется кэш PostgreSQL. | +| Buffers (bgwriter) | Метрика, показывающая активность фонового процесса записи, который занимается синхронизацией данных из оперативной памяти на диск. | +| Conflicts/Deadlocks | Метрика, отслеживающая две проблемы при работе с базой данных: конфликты восстановления и взаимоблокировки. | +| Temp File (Bytes) | Объем данных, записанных во временные файлы при выполнении запросов в базах данных. PostgreSQL создает временные файлы на диске, когда для выполнения запроса не хватает оперативной памяти. | +| Checkpoint Stats | Метрика, показывающая время, затрачиваемое на выполнение checkpoints в PostgreSQL, где:
- **write_time** - время, затраченное на запись данных на диск во время checkpoint (сколько миллисекунд ушло на запись файлов).
- **sync_time** - время, затраченное на синхронизацию файлов с диском (чтобы данные гарантированно сохранились). | + +## Метрики Patroni + +Метрик отображают состояние и конфигурацию кластера PostgreSQL под управлением Patroni. Эти метрики позволяют контролировать отказоустойчивость кластера, отслеживать переключения мастера и убеждаться, что репликация работает штатно. + +| Наименование | Описание | +|--------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| +| Patroni Leader | Метрика, которая показывает, какая нода в кластере PostgreSQL в данный момент является master-сервером, принимающим запросы на запись. | +| Patroni Replica | Метрика, которая показывает, какие узлы кластера PostgreSQL в данный момент выполняют роль реплики. | +| Sync Standby | Метрика, которая показывает, какая из реплик в кластере PostgreSQL назначена синхронной. | +| PostgreSQL WAL Replay | Метрика, которая показывает, включена ли на узлах кластера синхронизация данных через WAL. | +| PostgreSQL Pending Restart | Метрика, которая показывает, требуется ли перезагрузка PostgreSQL на узлах кластера после изменения конфигурационных параметров. | +| Patroni Primary Node | Метрика, которая показывает, какой узел в кластере PostgreSQL в данный момент является основным и принимает запросы на запись. | +| Patroni Secondary Nodes | Метрика, которая показывает, какие узлы кластера PostgreSQL в определенные моменты времени выполняли роль реплик. | +| Replicas Received WAL Location | Метрика, показывающая объем журналов предзаписи (WAL), полученных каждой репликой кластера. | +| Primary WAL Location | Метрика, показывающая объем журналов предзаписи (WAL), на основном сервере кластера PostgreSQL. | +| Replicas Replayed WAL Location | Метрика, показывающая объем журналов предзаписи (WAL), которые были не просто получены, а уже применены на репликах кластера. | +| WAL Replay Paused | Метрика, которая отслеживает, не приостановлен ли процесс применения WAL-журналов на узлах кластера. Если передача или применение WAL-файлов останавливается, на графике происходит скачок. | + +## Метрики Hosts + +Блок Hosts управляется селектором **Cluster node name**. Метрики отображают состояние и ресурсы серверов, на которых развернут кластер PostgreSQL. Данные метрики позволяют оценить, хватает ли серверу ресурсов для текущей нагрузки, и своевременно обнаружить проблемы с производительностью или нехваткой места на дисках. + +| Наименование | Описание | +| ---------------------------|-------------------------------------------------------------------------------------------------------------------------------| +| CPU Busy | Метрика, показывающая общую загруженность всех процессорных ядер на сервере, где работает PostgreSQL. | +| RAM Used | Метрика, показывающая процент оперативной памяти, который занят на сервере всеми процессами. | +| CPU Cores | Метрика, показывающая общее количество процессорных ядер, доступных на сервере, где работает PostgreSQL. | +| RAM Total | Метрика, показывающая общий объем оперативной памяти, установленный на сервере. | +| DB Disk Total | Метрика, показывающая общий объем дискового пространства, выделенного для хранения данных базы данных PostgreSQL на сервере. | +| CPU Basic | Метрика, которая показывает детальную разбивку загрузки процессора по типам выполняемых задач. Она позволяет увидеть, на что именно тратится процессорное время на сервере. | +| Memory Basic | Метрика, которая показывает детальную разбивку использования оперативной памяти на сервере, а также информацию о SWAP. | +| Disk IOps | Метрика, показывающая количество операций чтения и записи, выполняемых на диске сервера в секунду. | +| Disk Space Used Basic | Метрика, показывающая процент занятого дискового пространства на всех подключенных файловых системах сервера. | +| Disk R/W Data | Показывает объем данных в байтах, читаемых с диска и записываемых на диск в секунду. | +| Filesystem space available | Метрика, показывающая объем свободного дискового пространства на файловой системе сервера. | diff --git a/src/PaaS/index.md b/src/PaaS/index.md new file mode 100644 index 0000000..aabc1ca --- /dev/null +++ b/src/PaaS/index.md @@ -0,0 +1,14 @@ +--- +section_links: + - title: Grafana + link: /PaaS/grafana.md + description: Мониторинг и визуализация метрик кластера + - title: PgAdmin + link: /PaaS/pgadmin.md + description: Веб‑интерфейс для администрирования PostgreSQL + +--- + +# Cloud PostgreSQL + +В данном разделе представлена документация по управляемым сервисам платформы Beeline Cloud, относящимся к категории **PaaS**. \ No newline at end of file diff --git a/src/PaaS/PostgreSQL/pgadmin.md b/src/PaaS/pgadmin.md similarity index 66% rename from src/PaaS/PostgreSQL/pgadmin.md rename to src/PaaS/pgadmin.md index 7133416..9c282a3 100644 --- a/src/PaaS/PostgreSQL/pgadmin.md +++ b/src/PaaS/pgadmin.md @@ -1,6 +1,6 @@ # PgAdmin -После предоставления доступа к сервису Cloud PostgreSQL пользователь получает возможность управлять базами данных через веб-интерфейс pgAdmin. Ниже приведена инструкция по входу в систему и выполнению основных операций. +После предоставления доступа к сервису **Cloud PostgreSQL** пользователь получает возможность управлять базами данных через веб-интерфейс **pgAdmin**. Ниже приведена инструкция по входу в систему и выполнению основных операций. ## Вход в pgAdmin @@ -11,47 +11,60 @@ 4. Выберите предварительно настроенный сервер с названием **PostgreSQL**; 5. В открывшемся окне введите пароль; > Важно: на данном этапе необходимо указать **пароль учетной записи базы данных**, а не пароль от pgAdmin. -6. Нажмите **ОК**; -7. После успешной аутентификации станет доступен веб-интерфейс СУБД PostgreSQL. +6. Нажмите **ОК**. + +После успешной аутентификации станет доступен веб-интерфейс СУБД PostgreSQL. ## Просмотр реплик и параметров конфигурации pgAdmin позволяет осуществлять мониторинг реплик, входящих в состав кластера. +### Список реплик + Чтобы просмотреть список реплик: - Откройте раздел **Replica nodes** в панели навигации. +### Состояние репликации + Чтобы проверить состояние репликации: 1. Выберите нужную реплику в разделе **Replica nodes**; 2. Перейдите в подраздел **Replication**; 3. Откройте пункт **Replication stats**; -4. Разверните раздел **Подробности** - в нем отображаются все параметры и текущее состояние репликации; -> Вкладка **Replication** позволяет определить, выполняется ли передача данных на дополнительные узлы кластера. +4. Разверните раздел **Подробности** - в нем отображаются все параметры и текущее состояние репликации. -Так же, есть возможность посмотреть **параметры конфигурации PostgreSQL**, применённых к конкретной реплике. Для этого необходимо перейти в раздел **Конфигурация**, который расположен в блоке **Replica nodes**. +Вкладка **Replication** позволяет определить, выполняется ли передача данных на дополнительные узлы кластера. -Во вкладке отображается таблица со следующими колонками: +### Конфигурация реплики + +Чтобы просмотреть **параметры конфигурации PostgreSQL**, применённые к конкретной реплике, перейдите в раздел **Конфигурация**, расположенный в блоке **Replica nodes**. + +Раздел **Конфигурация** содержит следующие параметры: - **Имя** - наименование конфигурационного параметра; - **Категория** - логическая группа параметра; - **Значение** - текущее установленное значение; - **Единицы** - единицы измерения (если применимо); - **Описание** - краткое пояснение назначения параметра. > Вкладка **Конфигурация** предназначена для просмотра текущих настроек реплики. + ## Просмотр и управление базами данных -Для просмотра существующих баз данных: -- Откройте раздел **Базы данных** в панели навигации. В этом разделе отображается перечень всех созданных баз. +### Просмотр существующих баз данных: + +Чтобы просмотреть существующие базы данных, откройте раздел Базы данных в левой панели навигации. В этом разделе отображается перечень всех созданных баз. + +### Создание новой базы данных: -Для создания новой базы данных: 1. Щелкните правой кнопкой мыши по разделу **Базы данных**; 2. В контекстном меню выберите **Создать**, затем - **База данных**; 3. Заполните обязательные поля в открывшейся форме; 4. Нажмите **Сохранить**. + ## Роли входа / группы В разделе **Роли входа/группы** отображается список пользователей (ролей), имеющих доступ к базам данных кластера. -Для создания новой роли: +### Создание новой роли: + 1. Щелкните правой кнопкой мыши по разделу **Роли входа/группы**; 2. Выберите **Создать**, затем - **Роль входа/группы**; 3. Заполните необходимые параметры в форме создания роли; diff --git a/src/PaaS/postgresql/PostgreSQL-index.md b/src/PaaS/postgresql/PostgreSQL-index.md new file mode 100644 index 0000000..3e5f030 --- /dev/null +++ b/src/PaaS/postgresql/PostgreSQL-index.md @@ -0,0 +1,19 @@ +--- +section_links: + - title: Назначение сервсиа + link: /PaaS/PostgreSQL/about.md + description: Конфигурации и возможности сервиса + - title: Параметры кластера PostgreSQL + link: /PaaS/PostgreSQL/cluster_parameter.md + description: Технические параметры кластера PostgreSQL + - title: Схема подключения + link: /PaaS/PostgreSQL/connection.md + description: Общая схема подключения к Cloud PostgreSQL + - title: Создание сервиса + link: /PaaS/PostgreSQL/user_capabilities.md + description: Создание сервиса Cloud PostgreSQL +--- + +# Cloud PostgreSQL + +В данном разделе представлена документация по управляемому сервису **Cloud PostgreSQL** платформы Beeline Cloud. \ No newline at end of file diff --git a/src/PaaS/postgresql/about.md b/src/PaaS/postgresql/about.md new file mode 100644 index 0000000..b286657 --- /dev/null +++ b/src/PaaS/postgresql/about.md @@ -0,0 +1,87 @@ +# Cloud PostgreSQL + +## Назначение сервиса + +**Cloud PostgreSQL** - это управляемый облачный сервис реляционной базы данных PostgreSQL. Он позволяет развернуть и использовать отказоустойчивый кластер базы данных без необходимости самостоятельно настраивать серверы, репликацию и механизмы отказоустойчивости. + +PostgreSQL - это современная система управления базами данных, которая поддерживает стандарт SQL и используется для хранения и обработки данных приложений. + +В **Cloud PostgreSQL** все основные операции по управлению кластером выполняются автоматически. + +Сервис самостоятельно: +- управляет ролями серверов базы данных (основной сервер и реплики); +- отслеживает состояние узлов; +- автоматически переключает основной сервер при сбоях. + +Для обеспечения стабильной работы сервиса используется несколько инфраструктурных компонентов: +- **Patroni** - управляет кластером PostgreSQL и автоматическим переключением при отказах; +- **etcd** - хранит состояние кластера и обеспечивает согласованность работы узлов; +- **HAProxy** - обеспечивает единую точку подключения и распределяет клиентские подключения между узлами. + +Подключение к базе данных выполняется через прокси-узлы сервиса. Пользователю не требуется подключаться к отдельным серверам кластера — все операции производятся через единую точку доступа. + +Для управления базами данных и пользователями доступен web-интерфейс **pgAdmin**, позволяющий выполнять администрирование непосредственно через браузер. + +## Конфигурации кластера + +Сервис 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; +- администрирование баз данных через веб-интерфейс без прямого доступа к серверам кластера. diff --git a/src/PaaS/postgresql/cluster_parameter.md b/src/PaaS/postgresql/cluster_parameter.md new file mode 100644 index 0000000..bf27193 --- /dev/null +++ b/src/PaaS/postgresql/cluster_parameter.md @@ -0,0 +1,205 @@ +# О разделе + +Данный раздел содержит описание технических параметров кластера PostgreSQL и порядок их первичной конфигурации. + +Настройка указанных параметров выполняется администратором облачного провайдера на этапе развёртывания сервиса. Пользователь не имеет прямого доступа к их самостоятельной установке. + +Перед созданием кластера клиент предоставляет перечень требуемых параметров менеджеру. Администратор облачного провайдера выполняет конфигурацию в соответствии с согласованными требованиями. + +## Выбор типа и размера дискового хранилища + +Производительность базы данных напрямую зависит от скорости, с которой она может читать и записывать данные на диск. При заказе кластера необходимо выбрать тип дискового хранилища, который определит максимальную скорость работы (IOPS) и время отклика. + +**IOPS (Input/Output Operations Per Second)** — количество операций чтения или записи, которые диск может выполнить за секунду. Чем выше этот показатель, тем быстрее база данных обрабатывает запросы. + +## Доступные типы хранилищ: + +| Название | Лимит IOPS | Время отклика | +| ---------------| ------------------ | ------------- | +| **Fast SAS** | до 2 IOPS на 1 ГБ | до 10 мс | +| **SSD** | до 5 IOPS на 1 ГБ | до 7 мс | +| **Fast SSD** | до 10 IOPS на 1 ГБ | до 5 мс | +| **Ultra NVMe** | до 25 IOPS на 1 ГБ | до 3 мс | + +::: warning Примечание + +После выбора типа диска необходимо указать объем дискового хранилища, который будет выделен под данные кластера PostgreSQL. Минимальный объем - 50 ГБ. + +::: + +## Конфигурация вычислительных ресурсов + +В данном разделе определяются вычислительные мощности кластера: процессорные ресурсы, оперативная память и количество серверов (нод), из которых будет состоять кластер PostgreSQL. + +### Количество нод в кластере + +Количество нод определяет отказоустойчивость кластера и возможность распределять запросы на чтение между репликами. Чем больше нод, тем выше надёжность и производительность операций чтения. + +Количество нод выбирается в диапазоне **от 1 до 5**. + +### Процессор (CPU) + +Процессор — это вычислительная мощность, выделяемая каждой ноде кластера. Количество vCPU определяет, насколько быстро база данных сможет: + +- обрабатывать запросы; +- выполнять сложные операции (сортировки, объединения таблиц); +- обслуживать одновременные подключения. + +Доступный диапазон: **от 2 до 24 vCPU** на ноду. + +### Оперативная память (RAM) + +Оперативная память — один из ключевых ресурсов для производительности базы данных. Данные, помещающиеся в RAM, обрабатываются максимально быстро, без обращения к диску. + +Доступный диапазон: **от 4 до 768 ГБ RAM** на ноду. + +### Доступ в интернет + +При заказе сервиса можно выбрать пропускную способность канала связи, через который будет осуществляться доступ к кластеру PostgreSQL из сети интернет. + +**Доступные варианты скорости:** +- 50 Мбит/с; +- 100 Мбит/с; +- 200 Мбит/с; +- 300 Мбит/с; +- 400 Мбит/с; +- 500 Мбит/с; +- 1000 Мбит/с (1 Гбит/с). + +::: warning Примечание + +Для выбранного канала предоставляется статический белый IP-адрес. + +::: + +## Параметры конфигурации IPSEC + +Ниже приведены основные параметры, задаваемые при развёртывании кластера PostgreSQL. Часть параметров определяется клиентом на этапе заказа услуги, часть — фиксирована и не подлежит изменению. + +### Данные о конфигурации IPSEC + +Параметры подключения (имя туннеля, устройство, публичный IP-адрес) заполняются вручную на основании информации, предоставленной заказчиком. + +### Версия IKE (Internet Key Exchange) + +Версия IKE выбирается из выпадающего списка, который содержит два значения: + +- **IKE v1** — более ранняя версия протокола; +- **IKE v2** — более современная версия, обеспечивающая лучшую устойчивость соединения и более гибкую обработку ошибок. + +Рекомендуется использовать IKE v2, если оборудование заказчика это поддерживает. + +### Метод аутентификации + +Метод аутентификации выбирается из выпадающего списка, который содержит два варианта: + +- **PSK** (Pre-Shared Key) — аутентификация с использованием заранее согласованного общего ключа; +- **Certificate** (сертификат) — аутентификация с использованием цифровых сертификатов. + +## Этап 1 - установка защищенного соединения + +На данном этапе задаются параметры шифрования и аутентификации для защищённого канала связи. Все параметры выбираются вручную из выпадающих списков. + +### Алгоритм хэширования + +Определяет алгоритм хэширования для защиты управляющего канала. Параметр заполняется вручную из выпадающего списка: + +- **SHA1** — формирует хэш длиной 160 бит, имеет коллизии (уязвимости), в современных системах считается устаревшим, используется только для совместимости со старым оборудованием. +- **SHA2-256** — формирует хэш длиной 256 бит, существенно более устойчив к атакам, оптимальный баланс между безопасностью и производительностью. +- **SHA2-384** — длина хэша составляет 384 бита, имеет повышенную криптостойкость, требует больше вычислительных ресурсов, чем SHA-1 и SHA2-256. Используется в средах с повышенными требованиями к безопасности. +- **SHA2-512** — длина хэша составляет 512 бит, обеспечивает самый высокий уровень стойкости из перечисленных, создает наибольшую нагрузку на процессор. Обычно применяется в системах с повышенными требованиями к криптографии. + +### Шифрование (Hash) + +Определяет алгоритм симметричного шифрования. Параметр заполняется вручную из выпадающего списка: + +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** — упрощённый и ускоренный режим установления соединения с более низким уровнем защиты данных. + +### Время жизни (Lifetime) + +Параметр определяет, как долго действуют согласованные ключи в рамках первой фазы. После истечения времени выполняется повторная генерация ключей. + +## Этап 2 - передача данных + +Этап 2 IPsec-соединения отвечает за шифрование и защиту пользовательского трафика после того, как защищённый канал был установлен на этапе 1. Этот этап регулирует передачу данных между сторонами через безопасный туннель, который обеспечивает конфиденциальность и целостность данных. + +### Алгоритм хэширование (Hash) + +Аналогично этапу 1, параметр Hash используется для защиты целостности передаваемых данных. Он обеспечивает проверку того, что данные не были изменены при передаче. Доступны следующие алгоритмы: + +- SHA1; +- SHA2-256; +- SHA2-384; +- SHA2-512. + +## Шифрование + +Этап 2 отвечает за шифрование пользовательского трафика. Это важнейший параметр, который защищает данные при их передаче по сети. Доступны следующие алгоритмы: + +- AES 128; +- AES 256; +- AES GCM 128; +- AES GCM 192; +- AES GCM 256. + +### PFS + +**Enable perfect forward secrecy (PFS)** - параметр, активирующий генерацию нового ключа на этапе 2. При включенном PFS группа Diffie-Hellman (DH) будет такая же как и на 1-й фазе. + +Данный параметр представлен в виде чекбокса. При его включении: + +- на этапе 2 выполняется дополнительный обмен ключами DH; +- для каждой новой IPsec-сессии формируется новый независимый криптографический секрет; +- ключи шифрования пользовательского трафика не зависят от ключей этапа 1. + +### DH Group (группа Диффи — Хеллмана) + +Группа DH определяет параметры обмена ключами между сторонами. Чем выше номер группы, тем выше криптографическая стойкость и безопасность обмена. + +Данный параметр так же содержит в себе выпадающий список, состоящий из следующих значений: + +- group 2; +- group 5; +- group 14; +- group 15; +- group 16; +- group 19; +- group 20; +- group 21. + +### Время жизни (Lifetime) + +Определяет, как долго действуют согласованные ключи в рамках второй фазы. + +- рекомендуемое значение: 3600 секунд (1 час); +- после истечения времени выполняется повторная генерация ключей. + +### Префиксы локальной сети заказчика + +Этот параметр определяет, какие сети на стороне заказчика будут маршрутизироваться через **IPsec-туннель**. Префиксы задаются в формате `192.168.1.0/24`, который позволяет указать диапазон IP-адресов. \ No newline at end of file diff --git a/src/PaaS/postgresql/connection.md b/src/PaaS/postgresql/connection.md new file mode 100644 index 0000000..d561775 --- /dev/null +++ b/src/PaaS/postgresql/connection.md @@ -0,0 +1,86 @@ +# Общая схема подключения + +Доступ к кластеру 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` + +Авторизация выполняется с использованием учётных данных, предоставленных вместе с доступом к сервису. + +::: warning Важно + +- подключение к базе данных возможно только через указанный прокси-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/user_capabilities.md b/src/PaaS/postgresql/user_capabilities.md new file mode 100644 index 0000000..dbe1ea2 --- /dev/null +++ b/src/PaaS/postgresql/user_capabilities.md @@ -0,0 +1,203 @@ +# Создание сервиса Cloud PostgreSQL + +Данный раздел описывает права, которые предоставляются пользователю PostgreSQL при создании сервиса **Cloud PostgreSQ**L**, а также перечень административных операций, доступных ему для самостоятельного выполнения. + +При развертывании сервиса автоматически создаётся пользователь базы данных с преднастроенными атрибутами и привилегиями. Эти права позволяют заказчику самостоятельно управлять своими базами данных, ролями и пользователями в рамках созданного экземпляра 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