Установка
Предварительные требования для Mac OS
Чтобы установить необходимые компоненты на Mac, выполните:
Psycopg
Начиная с psycopg2-2.8
двоичная версия psycopg2 больше не устанавливается по умолчанию. Для установки из исходного кода необходим компилятор C и пакеты разработки postgres и python. Поскольку в экосистеме Python нельзя указать зависимость как psycopg2 OR psycopg2-binary, способ установки нужно выбрать самостоятельно.
Доступны следующие варианты:
- Использовать диспетчер пакетов дистрибутива
- При установке Patroni через pip указать
psycopg,psycopg2илиpsycopg2-binaryв списке зависимостей .
Общая установка через pip
Patroni можно установить с помощью pip:
где dependencies может быть пустым либо содержать один или несколько следующих вариантов:
etcd или etcd3
модуль python-etcd для использования Etcd как распределённого хранилища конфигурации (DCS)
consul
модуль py-consul для использования Consul как DCS
zookeeper
модуль kazoo для использования Zookeeper как DCS
exhibitor
модуль kazoo для использования Exhibitor как DCS (зависимости те же, что и для Zookeeper)
kubernetes
модуль kubernetes
для использования Kubernetes как DCS в Patroni
raft
модуль pysyncobj для использования реализации Raft на Python как DCS
awsboto3 для использования обратных вызовов AWS
jsonlogger
модуль python-json-logger для включения ведения журнала
в формате json
systemdsystemd-python для интеграции с sd_notify
all
всё перечисленное выше, кроме семейства psycopg
psycopg3
модуль psycopg\[binary\]\>=3.0.0
psycopg2
модуль psycopg2\>=2.5.4
psycopg2-binary
модуль psycopg2-binary
Например, для установки Patroni вместе с psycopg3, зависимостями Etcd как DCS и обратными вызовами AWS выполните:
Обратите внимание: внешние инструменты, вызываемые в сценариях создания реплики или пользовательской начальной инициализации, например WAL-E, следует устанавливать независимо от Patroni.
Установка пакетов в Linux
Для операционной системы могут быть доступны пакеты Patroni, подготовленные сообществом Postgres для:
- RHEL, RockyLinux и AlmaLinux;
- Debian и Ubuntu;
- SUSE Enterprise Linux.
Также доступны пакеты прямых зависимостей Patroni, например модулей Python, которых может не быть в официальных репозиториях операционной системы.
Подробнее см. документацию репозитория PGDG .
В производной от RedHat Enterprise Linux операционной системе могут также потребоваться пакеты EPEL; см. документацию репозитория EPEL .
После подключения репозитория PGDG для своей ОС можно установить Patroni.
Пакеты Patroni сопровождаются не разработчиками Patroni, а сообществом Postgres. Если нужна поддержка, сначала обратитесь в Postgres Slack .
Установка в производных Debian
После подключения репозитория PGDG, как описано выше , установите Patroni через apt:
Установка в производных RedHat
После подключения репозитория PGDG, как описано выше , установите Patroni с DCS etcd через dnf в RHEL 9 и производных:
Если производный дистрибутив RedHat не предоставляет пакеты, etcd можно установить из PGDG. На узлах DCS выполните:
При необходимости замените версию RHEL в репозитории на 8, получив pgdg-rhel8-extras. В RockyLinux, AlmaLinux, Oracle Linux и других имя репозитория по-прежнему имеет вид pgdg-rhelN-extras.
Установка в SUSE Enterprise Linux
Для некоторых зависимостей может потребоваться включить репозитории SUSE PackageHub. См. документацию SUSE PackageHub .
В SLES 15 с подключённым репозиторием PGDG, как описано выше , Patroni можно установить командой:
При включённом репозитории SUSE PackageHub можно также установить etcd:
Обновление
Обновление Patroni очень просто: обновите установленное программное обеспечение и перезапустите демон Patroni на каждом узле кластера.
Однако перезапуск демона Patroni приводит к перезапуску базы данных Postgres. В некоторых ситуациях это может вызвать переключение первичного узла при отказе, поэтому до завершения перезапуска демона рекомендуется перевести кластер в режим обслуживания.
Чтобы перевести кластер в режим обслуживания, выполните следующую команду на одном из узлов Patroni:
Затем на каждом узле кластера обновите пакеты способом, предусмотренным вашей ОС:
Перезапустите процесс демона Patroni на каждом узле:
Наконец, возобновите мониторинг Postgres через Patroni, чтобы вывести кластер из режима обслуживания:
Теперь кластер полностью работоспособен с новой версией Patroni.