Ответ
В последнем проекте на основе PostgreSQL была настроена асинхронная потоковая репликация (Streaming Replication) для повышения отказоустойчивости и распределения нагрузки на чтение.
Архитектура:
- 1 мастер-сервер (принимает запись).
- 2 реплики (standby) в режиме
hot_standby(доступны для запросовSELECT).
Ключевые шаги настройки:
- Конфигурация мастера (
postgresql.conf):wal_level = replica max_wal_senders = 3 wal_keep_size = 1GB - Настройка аутентификации (
pg_hba.conf):host replication replica_user 192.168.1.0/24 md5 - Создание реплики: Базовый бэкап с
pg_basebackupи настройкаrecovery.conf(илиpostgresql.auto.confв PG12+).
Мониторинг:
-- Проверка состояния репликации
SELECT client_addr, application_name, state, sync_state, replay_lag
FROM pg_stat_replication;
Оркестрация: Для автоматического переключения при сбое (failover) использовался Patroni с хранилищем конфигурации etcd, что позволило создать самоуправляемый кластер.