Patroni - PostgreSQL HA
Автоматически сгенерировано: 2026-03-03 09:38
Общая информация
Назначение: Автоматический failover PostgreSQL
Технология: Patroni + etcd
Серверы: - db-1 (10.10.19.31) - Primary/Leader - db-2 (10.10.19.32) - Replica/Standby
Текущий статус
Статус недоступен (требуется sudo доступ)
Предполагаемая конфигурация:
| Сервер | Роль | Состояние |
|---|---|---|
| db-1 | Leader | Running |
| db-2 | Replica | Running |
Конфигурация
Файл конфигурации: /etc/patroni.yml
Основные параметры:
- scope:
postgres-cluster - namespace:
/service/ - ttl: 30 секунд
- loop_wait: 10 секунд
- retry_timeout: 10 секунд
- maximum_lag_on_failover: 1048576 (1MB)
etcd endpoints
etcd:
hosts:
- 10.10.19.31:2379
- 10.10.19.32:2379
PostgreSQL параметры
Версия: PostgreSQL 17
Порт: 5432
Data directory: /var/lib/postgresql/17/main
Репликация: Streaming replication (синхронная)
Failover
Автоматический failover
- Patroni мониторит primary каждые 10 секунд
- При отказе primary (нет ответа 30 секунд)
- Patroni автоматически промотит replica в primary
- Обновляет etcd с новым лидером
- Приложения переподключаются автоматически
Время переключения: ~30-60 секунд
Ручной failover
# Переключение на конкретный сервер
ssh db-1
sudo patronictl failover postgres-cluster --candidate db-2
# Switchover (контролируемое переключение)
sudo patronictl switchover postgres-cluster
Проверка
# Статус кластера
ssh db-1 'sudo patronictl list'
# Конфигурация
ssh db-1 'sudo patronictl show-config'
# История
ssh db-1 'sudo patronictl history'
# Проверка репликации
ssh db-1 'sudo -u postgres psql -c "SELECT * FROM pg_stat_replication;"'
# Логи
ssh db-1 'sudo journalctl -u patroni -f'
Операции
Reinitialize replica
ssh db-2
sudo patronictl reinit postgres-cluster db-2
Restart PostgreSQL
ssh db-1
sudo patronictl restart postgres-cluster db-1
Reload configuration
ssh db-1
sudo patronictl reload postgres-cluster db-1