Перейти к основному содержимому

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

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

подсказка

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

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

    Внимание!

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

    CREATE PUBLICATION <publication_name> 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 отображается Графы репликации, Синхронный режим:

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