Настройка синхронной репликации в PostgreSQL#

Последовательность выполнения#

Рекомендуется настроить синхронную репликацию через DropApp.

  1. Создайте на сервере-источнике публикацию для всех таблиц:

    Транзакции с таблицами не указанными в публикации не будут завершаться.

    CREATE PUBLICATION {имя_публикации} FOR ALL TABLES`;
    
  2. Создайте на сервере-источнике слот репликации:

    Команда 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.

  3. На сервере-источнике выполните:

    ALTER SYSTEM SET synchronous_commit = 'remote_apply';
    ALTER SYSTEM SET synchronous_standby_names = '*';
    SELECT pg_reload_conf();
    
  4. Перейдите в консоль веб-интерфейса GraDeLy и запустите репликацию.

  5. Для проверки режима репликации на стороне БД-источника выполните запрос: 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 отображается Графы репликации, Синхронный режим:

Графы репликации, Синхронный режим