<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Документация Patroni 4.1.5 on PIG.CENTER</title><link>https://pig.center/ru/docs/patroni/</link><description>Recent content in Документация Patroni 4.1.5 on PIG.CENTER</description><generator>Hugo</generator><language>ru-RU</language><lastBuildDate>Tue, 08 Sep 2026 21:29:01 +0800</lastBuildDate><atom:link href="https://pig.center/ru/docs/patroni/index.xml" rel="self" type="application/rss+xml"/><item><title>Введение</title><link>https://pig.center/ru/docs/patroni/readme/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/readme/</guid><description>&lt;p&gt;&lt;a id="readme"&gt;&lt;/a&gt;&#10;Patroni — шаблон решений высокой доступности (HA) PostgreSQL на Python. Patroni возник как ответвление проекта &lt;a href="https://github.com/compose/governor"&gt;Governor&lt;/a&gt;&#10; от Compose и содержит множество новых возможностей.&lt;/p&gt;&#10;&lt;p&gt;Дополнительные вводные материалы:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=iruaCgeG7qs"&gt;PostgreSQL HA with Kubernetes and Patroni&lt;/a&gt;&#10; — доклад Джоша Беркуса на KubeCon 2016 (видео)&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://engineering.zalando.com/posts/2016/02/zalandos-patroni-a-template-for-high-availability-postgresql.html"&gt;Публикация в техническом блоге Zalando за февраль 2016 года&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="development-status"&gt;Состояние разработки&#10;&lt;/h2&gt;&#10;&lt;p&gt;Patroni активно разрабатывается и принимает вклады сообщества. Подробнее см. раздел &lt;a href="https://pig.center/ru/docs/patroni/contributing_guidelines/#contributing_guidelines"&gt;Участие в разработке&lt;/a&gt;&#10; ниже.&lt;/p&gt;&#10;&lt;p&gt;Сведения о новых выпусках публикуются &lt;a href="https://pig.center/ru/docs/patroni/releases/#releases"&gt;здесь&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Установка</title><link>https://pig.center/ru/docs/patroni/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/installation/</guid><description>&lt;p&gt;&lt;a id="installation"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="pre-requirements-for-mac-os"&gt;Предварительные требования для Mac OS&#10;&lt;/h2&gt;&#10;&lt;p&gt;Чтобы установить необходимые компоненты на Mac, выполните:&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-ca25e05e-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-ca25e05e-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;brew install postgresql etcd haproxy libyaml python&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;&lt;a id="psycopg2_install_options"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="psycopg"&gt;Psycopg&#10;&lt;/h2&gt;&#10;&lt;p&gt;Начиная с &lt;a href="https://www.psycopg.org/articles/2019/04/04/psycopg-28-released/"&gt;psycopg2-2.8&lt;/a&gt;&#10; двоичная версия psycopg2 больше не устанавливается по умолчанию. Для установки из исходного кода необходим компилятор C и пакеты разработки postgres и python. Поскольку в экосистеме Python нельзя указать зависимость как &lt;code&gt;psycopg2 OR psycopg2-binary&lt;/code&gt;, способ установки нужно выбрать самостоятельно.&lt;/p&gt;</description></item><item><title>Patroni REST API</title><link>https://pig.center/ru/docs/patroni/rest_api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/rest_api/</guid><description>&lt;p&gt;&lt;a id="rest_api"&gt;&lt;/a&gt;&#10;Patroni предоставляет обширный REST API. Сам Patroni использует его во время выбора лидера, инструмент &lt;a href="https://pig.center/ru/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; — для аварийных и плановых переключений, повторной инициализации, перезапусков и перезагрузки конфигурации, а HAProxy и другие балансировщики — для проверок работоспособности HTTP. API также можно применять для мониторинга. Ниже перечислены конечные точки REST API Patroni.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="health-check-endpoints"&gt;Конечные точки проверки работоспособности&#10;&lt;/h2&gt;&#10;&lt;p&gt;На все запросы проверки &lt;code&gt;GET&lt;/code&gt; Patroni возвращает документ JSON с состоянием узла и код состояния HTTP. Если документ JSON не нужен, вместо &lt;code&gt;GET&lt;/code&gt; можно использовать метод &lt;code&gt;HEAD&lt;/code&gt; или &lt;code&gt;OPTIONS&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>patronictl</title><link>https://pig.center/ru/docs/patroni/patronictl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/patronictl/</guid><description>&lt;p&gt;&lt;a id="patronictl_version_description"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl_version_parameters"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl_version_examples"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl"&gt;&lt;/a&gt;&#10;Patroni предоставляет интерфейс командной строки &lt;a href="https://pig.center/ru/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10;, предназначенный главным образом для взаимодействия с REST API Patroni и DCS. Он упрощает операции с кластером и удобен как людям, так и сценариям.&lt;/p&gt;&#10;&lt;p&gt;&lt;a id="patronictl_configuration"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="configuration"&gt;Конфигурация&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://pig.center/ru/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; использует 3 раздела конфигурации:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;ctl&lt;/strong&gt;: способ аутентификации в REST API Patroni и проверки подлинности сервера. Подробнее см. &lt;a href="https://pig.center/ru/docs/patroni/config/yaml/#patronictl_settings"&gt;параметры ctl&lt;/a&gt;&#10;;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;restapi&lt;/strong&gt;: способ аутентификации в REST API Patroni и проверки подлинности сервера. Используется, только если конфигурации &lt;code&gt;ctl&lt;/code&gt; недостаточно. &lt;a href="https://pig.center/ru/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; в основном использует раздел &lt;code&gt;restapi.authentication&lt;/code&gt;, если отсутствует &lt;code&gt;ctl.authentication&lt;/code&gt;, и параметр &lt;code&gt;restapi.cafile&lt;/code&gt;, если отсутствует &lt;code&gt;ctl.cacert&lt;/code&gt;. Подробнее см. &lt;a href="https://pig.center/ru/docs/patroni/config/yaml/#restapi_settings"&gt;параметры REST API&lt;/a&gt;&#10;;&lt;/li&gt;&#10;&lt;li&gt;DCS, например &lt;strong&gt;etcd&lt;/strong&gt;: способ подключения и аутентификации в DCS, используемом Patroni.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Эти параметры можно получить из переменных окружения или файла конфигурации. Способы их задания описаны в соответствующих разделах &lt;a href="https://pig.center/ru/docs/patroni/config/env/#env"&gt;Параметров конфигурации окружения&lt;/a&gt;&#10; и &lt;a href="https://pig.center/ru/docs/patroni/config/yaml/#yaml"&gt;Параметров конфигурации YAML&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Создание образов реплик и начальная инициализация</title><link>https://pig.center/ru/docs/patroni/replica_bootstrap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/replica_bootstrap/</guid><description>&lt;p&gt;&lt;a id="replica_imaging_and_bootstrap"&gt;&lt;/a&gt;&#10;Patroni позволяет настраивать создание новой реплики и определять действия при начальной инициализации нового пустого кластера. Различие строго определено: Patroni создаёт реплики, только если для кластера в DCS присутствует ключ &lt;code&gt;initialize&lt;/code&gt;. Если ключа &lt;code&gt;initialize&lt;/code&gt; нет, Patroni выполняет начальную инициализацию исключительно на первом узле, получившем блокировку ключа initialize.&lt;/p&gt;&#10;&lt;p&gt;&lt;a id="custom_bootstrap"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="bootstrap"&gt;Начальная инициализация&#10;&lt;/h2&gt;&#10;&lt;p&gt;PostgreSQL предоставляет команду &lt;code&gt;initdb&lt;/code&gt; для инициализации нового кластера, и Patroni вызывает её по умолчанию. В некоторых случаях, особенно при создании нового кластера как копии существующего, встроенный метод необходимо заменить пользовательскими действиями. Patroni поддерживает сценарии пользователя для начальной инициализации новых кластеров и передаёт им обязательные аргументы, например имя кластера и путь к каталогу данных. Это настраивается в разделе &lt;code&gt;bootstrap&lt;/code&gt; конфигурации Patroni. Например:&lt;/p&gt;</description></item><item><title>Режимы репликации</title><link>https://pig.center/ru/docs/patroni/replication_modes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/replication_modes/</guid><description>&lt;p&gt;&lt;a id="replication_modes"&gt;&lt;/a&gt;&#10;Patroni использует потоковую репликацию PostgreSQL. Подробнее см. &lt;a href="http://www.postgresql.org/docs/current/static/warm-standby.html#STREAMING-REPLICATION"&gt;документацию Postgres&lt;/a&gt;&#10;. По умолчанию Patroni настраивает PostgreSQL на асинхронную репликацию. Выбор схемы репликации зависит от требований бизнеса. Изучите асинхронную и синхронную репликацию, а также другие решения HA, чтобы выбрать подходящий вариант.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="asynchronous-mode-durability"&gt;Долговечность в асинхронном режиме&#10;&lt;/h2&gt;&#10;&lt;p&gt;В асинхронном режиме ради доступности кластер может потерять часть зафиксированных транзакций. При отказе или недоступности первичного сервера Patroni автоматически повышает достаточно исправный резервный сервер до первичного. Транзакции, не реплицированные на этот резервный сервер, остаются в «ответвившейся временной шкале» первичного и фактически невосстановимы&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;</description></item><item><title>Резервный кластер</title><link>https://pig.center/ru/docs/patroni/standby_cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/standby_cluster/</guid><description>&lt;p&gt;&lt;a id="standby_cluster"&gt;&lt;/a&gt;&#10;Patroni также поддерживает настройку каскадной репликации на удалённый центр обработки данных (регион) с использованием функции, называемой «резервный кластер». Такие кластеры обладают следующими характеристиками:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;«резервный лидер», который ведёт себя примерно как обычный лидер кластера, за исключением того, что реплицирует данные с удалённого узла.&lt;/li&gt;&#10;&lt;li&gt;каскадные реплики, которые реплицируют данные с резервного сервера.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Резервный сервер-лидер удерживает и обновляет блокировку лидера в DCS. Если блокировка лидера истекает, каскадные реплики выполнят голосование для выбора другого лидера из резервных серверов.&lt;/p&gt;</description></item><item><title>Поддержка сторожевого таймера</title><link>https://pig.center/ru/docs/patroni/watchdog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/watchdog/</guid><description>&lt;p&gt;&lt;a id="watchdog"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Запуск нескольких серверов PostgreSQL в качестве первичных может привести к потере транзакций из-за расхождения временных шкал. Такая ситуация также называется проблемой расщепленного мозга. Чтобы избежать проблемы расщепленного мозга, Patroni должен обеспечить, чтобы PostgreSQL не принимал никаких подтверждений транзакций после истечения срока действия ключа лидера в DCS. В нормальных условиях Patroni пытается достичь этого, останавливая PostgreSQL при неудаче обновления блокировки лидера по любой причине. Однако это может не произойти по различным причинам:&lt;/p&gt;</description></item><item><title>Режим приостановки/возобновления для кластера</title><link>https://pig.center/ru/docs/patroni/pause/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/pause/</guid><description>&lt;p&gt;&lt;a id="pause"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="the-goal"&gt;Цель&#10;&lt;/h2&gt;&#10;&lt;p&gt;В некоторых случаях Patroni должен временно прекратить управление кластером, сохраняя при этом состояние кластера в DCS. Возможные сценарии использования — редкие операции с кластером, такие как обновление до новой версии или восстановление после повреждения. В ходе таких операций узлы часто запускаются и останавливаются по причинам, неизвестным Patroni, некоторые узлы могут даже временно повышаться до статуса первичного сервера, что нарушает предположение о наличии только одного первичного сервера. Поэтому Patroni должен уметь «отключаться» от работающего кластера, реализуя эквивалент режима обслуживания, как в Pacemaker.&lt;/p&gt;</description></item><item><title>DCS Отказоустойчивый режим</title><link>https://pig.center/ru/docs/patroni/dcs_failsafe_mode/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/dcs_failsafe_mode/</guid><description>&lt;p&gt;&lt;a id="dcs_failsafe_mode"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="the-problem"&gt;Проблема&#10;&lt;/h2&gt;&#10;&lt;p&gt;Patroni активно использует распределённое хранилище конфигурации (DCS) для решения задачи выбора лидера и обнаружения сетевых разделений. Узел может запускать PostgreSQL как первичный сервер только в том случае, если ему удаётся обновить блокировку лидера в DCS. В случае неудачи обновления блокировки лидера PostgreSQL немедленно понижается до режима только для чтения. Вероятность возникновения «проблемы» зависит от используемого DCS. Например, при использовании etcd, который применяется исключительно для Patroni, вероятность близка к нулю, тогда как при использовании K8s API (основанного на etcd) такая ситуация может возникать чаще.&lt;/p&gt;</description></item><item><title>Использование Patroni с Kubernetes</title><link>https://pig.center/ru/docs/patroni/kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/kubernetes/</guid><description>&lt;p&gt;&lt;a id="kubernetes"&gt;&lt;/a&gt;&#10;Patroni может использовать объекты Kubernetes для хранения состояния кластера и управления ключом лидера. Это позволяет работать с Postgres в среде Kubernetes без дополнительного хранилища согласованности, то есть не требуется запуск отдельного развёртывания etcd. Patroni может использовать два различных типа объектов Kubernetes для хранения ключей лидера и конфигурации, которые настраиваются с помощью переменной среды &lt;code&gt;kubernetes.use_endpoints&lt;/code&gt; или &lt;code&gt;PATRONI_KUBERNETES_USE_ENDPOINTS&lt;/code&gt;.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="use-endpoints"&gt;Используйте конечные точки&#10;&lt;/h2&gt;&#10;&lt;p&gt;Несмотря на то что этот режим рекомендуется, по соображениям совместимости он отключён по умолчанию. Когда он включён, Patroni хранит конфигурацию кластера и ключ лидера в полях &lt;code&gt;metadata: annotations&lt;/code&gt; соответствующих &lt;code&gt;Endpoints&lt;/code&gt;, которые он создаёт. Смена лидера безопаснее, чем при использовании &lt;code&gt;ConfigMaps&lt;/code&gt;, поскольку одновременно обновляются и аннотации, содержащие информацию о лидере, и фактические адреса, указывающие на запущенный под-лидер.&lt;/p&gt;</description></item><item><title>Поддержка Citus</title><link>https://pig.center/ru/docs/patroni/citus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/citus/</guid><description>&lt;p&gt;&lt;a id="citus"&gt;&lt;/a&gt;&#10;Patroni делает развертывание кластеров &lt;a href="https://docs.citusdata.com/en/stable/installation/multi_node.html"&gt;Multi-Node Citus&lt;/a&gt;&#10; чрезвычайно простым.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="tldr"&gt;TL;DR&#10;&lt;/h2&gt;&#10;&lt;p&gt;Существует лишь несколько простых правил, которым необходимо следовать:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Расширение базы данных &lt;a href="https://github.com/citusdata/citus"&gt;Citus&lt;/a&gt;&#10; для PostgreSQL должно быть доступно на всех узлах. Абсолютно минимальная поддерживаемая версия Citus — 10.0, но для использования всех преимуществ прозрачных плановых переключений и перезапусков рабочих узлов рекомендуется как минимум Citus 11.2.&lt;/li&gt;&#10;&lt;li&gt;Имя кластера (&lt;code&gt;scope&lt;/code&gt;) должно быть одинаковым для всех узлов Citus!&lt;/li&gt;&#10;&lt;li&gt;Учётные данные суперпользователя должны быть одинаковыми на координаторе и всех рабочих узлах, а &lt;code&gt;pg_hba.conf&lt;/code&gt; должен разрешать доступ суперпользователя между всеми узлами.&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/ru/docs/patroni/config/yaml/#restapi_settings"&gt;REST API&lt;/a&gt;&#10; доступ должен быть разрешён с узлов-работников к координатору. E.g, учётные данные должны быть одинаковыми, и, если настроены, клиентские сертификаты с узлов-работников должны быть приняты координатором.&lt;/li&gt;&#10;&lt;li&gt;Добавьте следующий раздел в &lt;code&gt;patroni.yaml&lt;/code&gt;:&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-49f24e01-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="yaml" data-td-line-count="3"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-49f24e01-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;citus&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;group&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;X &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 0 for coordinator and 1, 2, 3, etc for workers&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;database&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;citus &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# must be the same on all nodes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;После этого вам нужно просто запустить Patroni, и он сам займётся остальным:&lt;/p&gt;</description></item><item><title>Преобразование отдельного экземпляра в кластер Patroni</title><link>https://pig.center/ru/docs/patroni/existing_data/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/existing_data/</guid><description>&lt;p&gt;&lt;a id="existing_data"&gt;&lt;/a&gt;&#10;В этом разделе описано преобразование отдельного экземпляра PostgreSQL в кластер Patroni.&lt;/p&gt;&#10;&lt;p&gt;Чтобы развернуть кластер Patroni без существующего экземпляра PostgreSQL, обратитесь к разделу &lt;a href="https://pig.center/ru/docs/patroni/readme/#running_configuring"&gt;Запуск и настройка&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="procedure"&gt;Процедура&#10;&lt;/h2&gt;&#10;&lt;p&gt;Ниже приведён обзор преобразования существующего кластера Postgres в кластер под управлением Patroni. Предполагается, что все узлы существующего кластера работают и во время миграции вы &lt;em&gt;не намерены&lt;/em&gt; менять конфигурацию Postgres. Выполните следующие действия:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Создайте пользователей Postgres, как описано в разделе &lt;a href="https://pig.center/ru/docs/patroni/config/yaml/#postgresql_settings"&gt;аутентификации&lt;/a&gt;&#10; конфигурации Patroni. В блоке SQL ниже приведены примеры команд; замените имена пользователей и пароли в соответствии со своим окружением. Если необходимые пользователи уже существуют, пропустите этот шаг.&lt;/p&gt;</description></item><item><title>Интеграция с другими инструментами</title><link>https://pig.center/ru/docs/patroni/tools_integration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/tools_integration/</guid><description>&lt;p&gt;&lt;a id="tools_integration"&gt;&lt;/a&gt;&#10;Patroni способен интегрироваться с другими инструментами в вашем стеке. В этом разделе вы найдете список примеров, которые, хотя и не являются исчерпывающими, могут дать вам идеи о том, как Patroni может интегрироваться с другими инструментами.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="barman"&gt;Barman&#10;&lt;/h2&gt;&#10;&lt;p&gt;Patroni предоставляет приложение с именем &lt;code&gt;patroni_barman&lt;/code&gt;, в котором реализована логика взаимодействия с &lt;code&gt;pg-backup-api&lt;/code&gt;, что позволяет выполнять операции Barman удалённо.&lt;/p&gt;&#10;&lt;p&gt;У данного приложения в настоящее время имеется несколько подкоманд: &lt;code&gt;recover&lt;/code&gt; и &lt;code&gt;config-switch&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Аспекты безопасности</title><link>https://pig.center/ru/docs/patroni/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/security/</guid><description>&lt;p&gt;&lt;a id="security"&gt;&lt;/a&gt;&#10;Кластер Patroni имеет два интерфейса, которые необходимо защитить от несанкционированного доступа: хранилище распределённой конфигурации (DCS) и REST API Patroni (REST) (API).&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="protecting-dcs"&gt;Защита DCS&#10;&lt;/h2&gt;&#10;&lt;p&gt;Patroni и &lt;a href="https://pig.center/ru/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; хранят и извлекают данные из DCS.&lt;/p&gt;&#10;&lt;p&gt;Несмотря на то что DCS не содержит никакой конфиденциальной информации, он позволяет изменять часть конфигурации Patroni/Postgres. Поэтому первым делом необходимо защитить DCS.&lt;/p&gt;&#10;&lt;p&gt;Детали защиты зависят от типа DCS, используемого в системе. Параметры аутентификации и шифрования (токены/базовая аутентификация/сертификаты клиента) для поддерживаемых типов DCS описаны в &lt;a href="https://pig.center/ru/docs/patroni/config/yaml/#yaml"&gt;настройки&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>HA-кластер с несколькими центрами обработки данных</title><link>https://pig.center/ru/docs/patroni/ha_multi_dc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/ha_multi_dc/</guid><description>&lt;p&gt;&lt;a id="ha_multi_dc"&gt;&lt;/a&gt;&#10;Высокая доступность кластера PostgreSQL, развернутого в нескольких центрах обработки данных, основана на репликации, которая может быть синхронной или асинхронной (см. &lt;a href="https://pig.center/ru/docs/patroni/replication_modes/#replication_modes"&gt;режимы репликации&lt;/a&gt;&#10;).&lt;/p&gt;&#10;&lt;p&gt;В обоих случаях важно четко понимать следующие понятия:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;PostgreSQL может работать в качестве первичного сервера или резервного сервера-лидера только тогда, когда он владеет ключом лидера и может обновлять этот ключ.&lt;/li&gt;&#10;&lt;li&gt;Рекомендуется запускать нечётное количество узлов etcd, ZooKeeper или Consul: 3 или 5!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="synchronous-replication"&gt;Синхронная репликация&#10;&lt;/h2&gt;&#10;&lt;p&gt;Для создания кластера с несколькими ЦО, способного автоматически переживать отказ зоны, требуется как минимум 3.&lt;/p&gt;</description></item><item><title>Часто задаваемые вопросы</title><link>https://pig.center/ru/docs/patroni/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/faq/</guid><description>&lt;p&gt;&lt;a id="faq"&gt;&lt;/a&gt;&#10;В этом разделе приведены ответы на самые частые вопросы о Patroni. Каждый подраздел посвящён отдельной категории вопросов.&lt;/p&gt;&#10;&lt;p&gt;Надеемся, это прояснит большинство вопросов. Если сомнения остаются или возникла неожиданная проблема, инструкции по получению помощи и сообщению об ошибке приведены в разделах &lt;a href="https://pig.center/ru/docs/patroni/contributing_guidelines/#chatting"&gt;общение&lt;/a&gt;&#10; и &lt;a href="https://pig.center/ru/docs/patroni/contributing_guidelines/#reporting_bugs"&gt;сообщение об ошибках&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="comparison-with-other-ha-solutions"&gt;Сравнение с другими решениями HA&#10;&lt;/h2&gt;&#10;&lt;p&gt;Почему Patroni требует отдельный кластер узлов DCS, а другие решения наподобие &lt;code&gt;repmgr&lt;/code&gt; — нет?&lt;br&gt;&#10;Решения HA можно реализовать разными способами, каждый со своими преимуществами и недостатками.&lt;/p&gt;</description></item><item><title>Примечания к выпускам</title><link>https://pig.center/ru/docs/patroni/releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/releases/</guid><description>&lt;p&gt;&lt;a id="releases"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="version-415"&gt;Версия 4.1.5&#10;&lt;/h2&gt;&#10;&lt;p&gt;Выпущено 2026-08-12&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Улучшения совместимости&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Совместимость с PostgreSQL 14.24, 15.19, 16.15, 17.11, 18.6 (Alexander Kukushkin)&lt;/p&gt;&#10;&lt;p&gt;Добавьте новый &lt;code&gt;output_plugin_libraries&lt;/code&gt; GUC, который ограничивает вывод плагинов логического декодирования.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Улучшения&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Записывать REST предупреждения о сбросе API соединений в &lt;code&gt;DEBUG&lt;/code&gt; вместо &lt;code&gt;WARNING&lt;/code&gt; (Kyle McLaren)&lt;/p&gt;&#10;&lt;p&gt;Убедитесь, что распространенные варианты &amp;ldquo;клиент неожиданно завершил операцию записи&amp;rdquo; не влияют на обработку реальных (не связанных с соединением) ошибок.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Исправления ошибок&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Исправить выравнивание при проверке &lt;code&gt;thread_stack_size&lt;/code&gt; (Sundong Kim)&lt;/p&gt;</description></item><item><title>Рекомендации по участию в разработке</title><link>https://pig.center/ru/docs/patroni/contributing_guidelines/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/ru/docs/patroni/contributing_guidelines/</guid><description>&lt;p&gt;&lt;a id="contributing_guidelines"&gt;&lt;/a&gt;&#10;&lt;a id="chatting"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="chatting"&gt;Общение&#10;&lt;/h2&gt;&#10;&lt;p&gt;Если у вас есть вопрос, нужна интерактивная помощь в устранении неполадок или хочется пообщаться с другими пользователями Patroni, присоединяйтесь к каналу &lt;a href="https://postgresteam.slack.com/archives/C9XPYG92A"&gt;#patroni&lt;/a&gt;&#10; в &lt;a href="https://pgtreats.info/slack-invite"&gt;PostgreSQL Slack&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;p&gt;&lt;a id="reporting_bugs"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="reporting-bugs"&gt;Сообщение об ошибках&#10;&lt;/h2&gt;&#10;&lt;p&gt;Перед сообщением об ошибке обязательно &lt;strong&gt;воспроизведите её в последней версии Patroni&lt;/strong&gt;. Также проверьте, не зарегистрирована ли проблема в нашем &lt;a href="https://github.com/patroni/patroni/issues"&gt;трекере&lt;/a&gt;&#10;.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="running-tests"&gt;Запуск тестов&#10;&lt;/h2&gt;&#10;&lt;p&gt;Требования для запуска тестов behave:&lt;/p&gt;</description></item></channel></rss>