Настройка синхронной репликации в PostgreSQL#
Последовательность выполнения#
Рекомендуется настроить синхронную репликацию через DropApp.
Создайте на сервере-источнике публикацию для всех таблиц:
Транзакции с таблицами не указанными в публикации не будут завершаться.
CREATE PUBLICATION {имя_публикации} FOR ALL TABLES`;Создайте на сервере-источнике слот репликации:
Команда
SELECT * FROM pg_create_logical_replication_slot(...)работает только для standalone БД. В кластере PG используйте описанный способ через pangolin-manager.Для Standalone PostgreSQL
SELECT * FROM pg_create_logical_replication_slot('grdl_slot', 'pgoutput');Для кластера PostgreSQL (через pangolin-manager):
Откройте редактор конфигурации:
sudo pangolin-manager-ctl -c /etc/pangolin-manager/postgres.yml edit-configи добавьте параметры в конфигурацию:postgresql: parameters: ... use_slots: true slots: grdl_slot: database: postgres plugin: pgoutput type: logicalПерезапустите кластер или примените конфигурацию, если используется hot reload.
На сервере-источнике выполните:
ALTER SYSTEM SET synchronous_commit = 'remote_apply'; ALTER SYSTEM SET synchronous_standby_names = '*'; SELECT pg_reload_conf();Перейдите в консоль веб-интерфейса GraDeLy и запустите репликацию.
Для проверки режима репликации на стороне БД-источника выполните запрос:
SELECT usename , sync_state FROM pg_stat_replication;.
Для переключения в асинхронный режим измените настройки в файле postgresql.auto.conf на сервере-источнике:
alter system set synchronous_commit = on;
alter system set synchronous_standby_names = '';
select pg_reload_conf();
Результат#
На модуле Capture отображается
:
