Назад | Перейти на главную страницу

Добавьте 3-й сервер с репликацией pglogical в кластер из 2 серверов с потоковой синхронизацией репликации и отказоустойчивой с помощью patroni

У меня есть 3 сервера с Ubuntu 19.10, PostgreSQL 12.2 и Patroni 1.6.4, и я хотел бы иметь следующую настройку:

Я хочу иметь два сервера с синхронизированной репликацией, и я хочу добавить третий сервер с репликацией pglogical, чтобы принимать вставки в определенные таблицы. никаких DELETE, TRUNCATE или чего-либо еще.

Я регистрирую огромное количество покупок в день, около 300 миллионов. Я хочу, чтобы на серверах уже была история покупок за последние 30 дней, а на третьем сервере с очень большим хранилищем будет храниться вся история покупок.

Пока у меня есть кластер patroni с etcd для 2 серверов со следующей конфигурацией:

Это для первого и второго сервера. У меня следующая конфигурация, конечно, имя сервера отличается в каждой конфигурации:

scope: patroni_cluster_1
name: server_X

restapi:
  listen: 0.0.0.0:8008
  connect_address: X.X.X.X:8008

etcd:
  hosts: X.X.X.X:2379
  protocol: http

bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout : 10
    maximum_lag_on_failover: 1048576
    postgresql:
      use_pg_rewind: true
      use_slots: true
      parameters:
        wal_keep_segments: 100

  initdb:
  - encoding: UTF8
  - data-checksums

  pg_hba:
  - host replication replicator 0.0.0.0/0 md5
  - host all all 0.0.0.0/0 md5

postgresql:
  listen: 0.0.0.0:5432
  connect_address: X.X.X.X:5432
  synchronous_mode: true
  synchronous_mode_strict: false
  data_dir: /var/lib/postgresql/patroni_cluster_1/server_X/data
  bin_dir: /usr/lib/postgresql/12/bin
  authentication:
    replication:
      username: replicator
      password: XXXX
    superuser:
      username: postgres
      password: XXXX
  parameters:
    shared_preload_libraries: pglogical

Я добавил pglogical в качестве разделяемой библиотеки из-за третьего сервера, который я хотел бы знать, могу ли я полностью настроить Patroni.

Я читал о том, как настроить pglogical с помощью https://blog.dbi-services.com/postgresql-logical-replication-with-pglogical/ и я хотел бы знать, могу ли я полностью настроить 3-й сервер с pglogical только для вставок.

Я новичок в Patroni и довольно растерян, поэтому я буду благодарен за любую информацию по этому вопросу.

единственный способ, который я нашел для этого, - это создать сценарий bash, который выполняет команды psql, которые настраивают pglogical.

поэтому я добавил свойство post_bootstrap в yaml, как указано здесь: https://github.com/zalando/patroni/blob/master/docs/SETTINGS.rst

сценарий bash получает dsn базы данных в качестве параметров, я использую его для подключения к нему и настройки того, что мне нравится.

Насколько я знаю, нет возможности настроить pglogical напрямую из patroni.