Репликация в Postgres Pro: полное руководство
Зачем нужна репликация
Репликация в СУБД Postgres Pro позволяет:
- обеспечить отказоустойчивость (High Availability);
- разгрузить основную базу при чтении (отчёты, BI, REST API);
- построить реплику для тестирования или обновлений без риска для прод;
- реализовать геораспределённые системы (для разных регионов/ДЦ);
- создать систему репликации в облако (например, с он-прем в VK Cloud).
Архитектура и термины
- Master (primary) — ведущий сервер, на который идут все записи.
- Replica (standby) — ведомый сервер, получает данные с мастера.
- WAL (Write Ahead Log) — журналы транзакций, которые передаются на реплику.
- Streaming replication — потоковая репликация WAL в режиме реального времени.
- Hot standby — реплика доступна для чтения.
- Logical replication — логическая репликация по таблицам/схемам.
Виды репликации в Postgres Pro
|
Тип |
Назначение |
Поддержка |
|---|---|---|
|
Физическая (streaming) |
Для отказоустойчивости, резервов |
✓ Standard |
|
Горячая (Hot Standby) |
Для BI, аналитики |
✓ Standard |
|
Логическая |
Для выборочной репликации по таблицам |
✓ 10+ |
|
Слотовая (replication slot) |
Для контроля WAL |
✓ |
|
Cascading replication |
Реплика → реплика |
✓ |
Пример настройки физической потоковой репликации
Предпосылки:
- Два сервера: master и replica
- Версия Postgres Pro одинаковая
- SSH доступ между ними
1. Настройка master
postgresql.conf:
wal_level = replica max_wal_senders = 10 wal_keep_size = 128MB hot_standby = on archive_mode = on archive_command = 'cp %p /var/lib/pgsql/archive/%f'
pg_hba.conf:
host replication replicator 192.168.0.2/32 md5
Создайте пользователя:
CREATE ROLE replicator WITH REPLICATION LOGIN PASSWORD 'replicapass';
2. Настройка replica
На стороне реплики:
- Остановите postgres
- Удалите старую data-папку:
rm -rf /var/lib/pgsql/data/*
- Скопируйте данные с мастера:
pg_basebackup -h 192.168.0.1 -U replicator -D /var/lib/pgsql/data -Fp -Xs -P -R
- Убедитесь, что создан файл standby.signal
- Запустите postgres на реплике
3. Проверка
-- на мастере SELECT * FROM pg_stat_replication; -- на реплике SELECT pg_is_in_recovery(); -- должно быть true
Логическая репликация (с версии 10+)
Используется для:
- передачи отдельных таблиц;
- интеграции с другими системами (например, ETL, Kafka);
- миграции данных.
Пример: логическая публикация и подписка
На источнике:
CREATE PUBLICATION my_pub FOR TABLE customers, orders;
На подписчике:
CREATE SUBSCRIPTION my_sub CONNECTION 'host=192.168.0.1 port=5432 dbname=mydb user=replicator password=replicapass' PUBLICATION my_pub;
Особенности и best practices
Мониторинг репликации:
-- На мастере SELECT * FROM pg_stat_replication; -- На реплике SELECT pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn();
Использование реплики для BI
- Разгрузите прод → направляйте Power BI / Qlik на read-only реплику
- Разрешите подключение через pg_hba.conf
- Настройте pg_stat_statements на реплике отдельно
Типичные проблемы и их решения
|
Проблема |
Причина и решение |
|---|---|
|
Реплика отстаёт на много WAL |
Нехватка пропускной способности → увеличить wal_keep_size |
|
FATAL: password authentication failed |
Неверные права или pg_hba.conf |
|
pg_basebackup: could not connect |
Порт не открыт, нет роли REPLICATION |
|
pg_is_in_recovery() = false на реплике |
Не создан standby.signal или неправильный recovery.conf |
|
Ошибка logical replication |
У таблицы нет PK → добавьте PRIMARY KEY |
Расширенные сценарии
Cascading replication
master → replica1 → replica2
На replica1:
wal_level = replica hot_standby = on
На replica2 — делаем pg_basebackup от replica1
Использование с BI и аналитикой
- Можно создать отдельный кластер только для отчетов;
- Использовать logical replication для только нужных таблиц (например, витрин);
- Запускать тяжёлые materialized views только на read-only реплике.
Совместимость с инструментами
|
Инструмент |
Работа с репликой |
|---|---|
|
Power BI, Tableau |
✓ чтение с реплики |
|
pgAdmin, DBeaver |
✓ подключение |
|
pg_probackup |
✓ на реплике можно делать бэкап |
|
Patroni / BiHA |
✓ совместимы, обеспечивают failover |
Вывод
Репликация в Postgres Pro — зрелый и гибкий механизм, который позволяет:
- обеспечивать отказоустойчивость;
- ускорять отчётность и аналитику;
- мигрировать данные между серверами;
- выстраивать гибкую архитектуру DWH и BI.
Практические кейсы использования репликации в Postgres Pro
Кейс 1. Реплика для аналитики и BI
Ситуация:
Компания использует Postgres Pro как OLTP-систему (CRM), а также формирует отчёты в Power BI. Запросы к большим таблицам тормозят основную базу.
Решение:
- Настроена горячая физическая реплика (hot standby).
- Power BI подключён только к реплике.
- Обновления не мешают продакшн-системе.
Результат:
Производительность отчётов выросла, нагрузка на мастер снизилась на 40–60%.
Кейс 2. Репликация в другую площадку для отказоустойчивости
Ситуация:
Финансовый сервис хранит критичные транзакционные данные. Требуется резервная площадка (on-prem → облако).
Решение:
- Используется streaming replication + archive_command;
- Репликация организована в удалённый ЦОД через VPN;
- На стороне реплики включен pg_probackup для резервного копирования.
Результат:
Можно переключиться вручную (или с Patroni) за 20–30 секунд. Копии всегда актуальны.
Кейс 3. Использование логической репликации для миграции с PostgreSQL
Ситуация:
Компания хочет мигрировать часть схемы (витрины данных) с PostgreSQL в Postgres Pro Enterprise, не останавливая прод.
Решение:
- Настроена логическая публикация на старой БД;
- Подключена подписка в новой инстанции Postgres Pro;
- После стабилизации данных BI перенастроен на новый сервер.
Результат:
Миграция прошла без простоев и влияния на пользователей.
Чек-лист: подготовка проекта с репликацией в Postgres Pro
1. Предпроектный этап
- Оценены цели репликации (HA, отчётность, георезерв, миграция)
- Выбран тип репликации: физическая, логическая, каскадная
- Уточнены сетевые ограничения и порты (5432 + ssh + wal archive)
- Принято решение о роли реплики (только чтение, отчёты, backup)
2. Настройка сервера (master)
- Включён wal_level = replica
- Установлен max_wal_senders (обычно 5–10)
- Настроено wal_keep_size или archive_mode
- Добавлена роль REPLICATION (например, replicator)
- Настроен pg_hba.conf с доступом к репликации
3. Настройка реплики
- Использован pg_basebackup или recovery.conf / standby.signal
- Файл данных и каталоги WAL корректно подключены
- Разрешено подключение к read-only базе (для BI)
- Запуск в режиме hot standby (hot_standby = on)
4. Тестирование
- Проверка pg_stat_replication на мастере
- Проверка pg_is_in_recovery() на реплике
- Проверка применения WAL (LSN): pg_last_wal_receive_lsn() и replay_lsn()
- Проверка чтения с реплики (BI, SELECT)
5. Документация и автоматизация
- Создано описание схемы репликации (диаграмма)
- Добавлены cron- или systemd-задачи на логирование состояния
- Обновлены процедуры аварийного переключения (failover plan)
Чек-лист ежедневной эксплуатации репликации
1. Мониторинг состояния
- Проверка pg_stat_replication — активность потоков
- Проверка отставания: pg_last_wal_replay_lsn()
- Проверка ошибок в postgresql.log на обоих узлах
2. Хранилище и WAL
- Контроль свободного места на диске
- Проверка pg_wal на мастере (не растёт ли)
- Если используется архив — проверка свежести файлов в каталоге WAL-архива
3. Безопасность и доступ
- Проверка ssh-ключей (если используется scp/rsync)
- Аудит доступа к пользователю replicator
- Обновление паролей и cert-файлов при необходимости
4. Резервное копирование
- pg_probackup выполняется на реплике (экономит ресурсы мастера)
- Выполняется проверка целостности резервных копий (validate)
- Хранится лог истории — какие копии, откуда, за какой период
Postgres Professional — это российская промышленная СУБД, созданная на базе открытого PostgreSQL, но значительно расширенная для корпоративного применения. В отличие от классического PostgreSQL, решения от Postgres Professional включают в себя поддержку российских ГОСТов и сертификацию ФСТЭК, повышенную надёжность, оптимизации под высоконагруженные системы (в том числе 1С и DWH), инструменты резервного копирования, мониторинга и отказоустойчивости. За платформой стоит команда ядра PostgreSQL в России, что гарантирует актуальность, стабильность и экспертную техническую поддержку 24/7.
Для компаний, которым важно не просто использовать PostgreSQL, а внедрить его на уровне корпоративных стандартов — с гарантией, сопровождением, документированными улучшениями и адаптацией под российское законодательство — Postgres Pro Enterprise становится логичным выбором. Это не просто бесплатная база данных, а полноценный продуктовый стек, совместимый с BI, аналитикой, ERP, 1С и другими системами, в том числе импортозамещёнными.




