PostgreSQL replication на VPS: streaming replica и failover
Настройка PostgreSQL streaming replication на VPS: primary/replica, pg_basebackup, мониторинг lag. High availability для малого проекта.
Краткий ответ: Primary принимает записи, replica — read-only копия через WAL streaming. Два VPS или primary + replica на разных AZ — защита от падения диска/сервера.
Не заменяет полноценный Patroni-кластер, но для SaaS на 2 VPS — must-have step перед ростом.
Архитектура
App → Primary (read/write)
↓ WAL stream
Replica (read-only, backup)
Тюнинг primary — PostgreSQL tuning. Выбор БД — MySQL vs PostgreSQL.
Primary: postgresql.conf
wal_level = replica
max_wal_senders = 3
wal_keep_size = 1GB
# pg_hba.conf — разрешить replica IP
host replication replicator REPLICA_IP/32 scram-sha-256
CREATE USER replicator WITH REPLICATION PASSWORD 'secret';
Replica: pg_basebackup
sudo systemctl stop postgresql
sudo rm -rf /var/lib/postgresql/16/main/*
sudo -u postgres pg_basebackup -h PRIMARY_IP -D /var/lib/postgresql/16/main -U replicator -P -R
sudo systemctl start postgresql
Флаг -R создаёт standby.signal и primary_conninfo.
Проверка lag
-- на primary
SELECT client_addr, state, sent_lsn, write_lsn, flush_lsn
FROM pg_stat_replication;
-- на replica
SELECT pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn();
Алерты — Prometheus + Alertmanager.
Read-only на replica
-- replica по умолчанию hot standby
SELECT pg_is_in_recovery(); -- true
Приложение: read queries → replica, writes → primary. Laravel/Django — database routing.
Failover (ручной)
- Promote replica:
pg_ctl promoteилиpg_promote() - Переключить DNS/apps на новый primary
- Старый primary — rebuild как replica
Автоматический failover — Patroni/etcd (отдельная тема, 3+ nodes).
Бэкапы
Replica — удобно для pg_dump без нагрузки на primary. Плюс Restic WAL archive (опционально).
Итог
PostgreSQL streaming replication на двух VPS — первый шаг к HA. Primary + replica, мониторинг lag, plan ручного failover.
VPS 2× — StormNet Cloud. Балансировка — HAProxy. VPN между серверами — WireGuard.
Рекомендуем прочитать
Частые вопросы
Нужна ли replica PostgreSQL на одном VPS?
Нет — replica на том же диске не защитит от hardware failure. Нужен второй VPS или другой AZ.
Streaming replication или logical replication?
Streaming — полная копия БД, проще для HA и read replica. Logical — выборочные таблицы, миграции между версиями.






