Настройка синхронной репликации в PostgreSQL
Последовательность выполнения
Рекомендуется настроить синхронную репликацию через DropApp.
-
Создайте на сервере-источнике публикацию для всех таблиц:
Внимание!Транзакции с таблицами, не указанными в публикации, не будут завершаться.
CREATE PUBLICATION <publication_name> 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: trueslots:grdl_slot:database: postgresplugin: pgoutputtype: 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 отображается :
