web-dev-qa-db-ja.com

pglogicalレプリケーションを備えた3番目のサーバーを、ストリーム同期レプリケーションを備えた2サーバークラスターに追加し、patroniを使用してフェイルセーフを追加します

Ubuntu 19.10、PostgreSQL 12.2、Patroni 1.6.4を搭載した3台のサーバーがあり、次のように設定したいと思います。

特定のテーブルへの挿入を受け入れるためだけに、同期レプリケーションを備えた2台のサーバーを用意し、pglogicalレプリケーションを備えた3台目のサーバーを追加したいと思います。 DELETE、TRUNCATEなどはありません。

1日に膨大な量の購入を記録します。サーバーに過去30日間の購入履歴がすでにあるようにしたいと思います。非常に大きなストレージを持つ3番目のサーバーが購入のすべての履歴を保持します。

これまでのところ、次の構成の2つのサーバー用のetcdを使用したpatroniクラスターがあります。

これは、次の構成を持つ最初と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

Patroniで完全にセットアップできるかどうかを知りたい3番目のサーバーがあるため、pglogicalを共有ライブラリとして追加しました。

https://blog.dbi-services.com/postgresql-logical-replication-with-pglogical/ でpglogicalを設定する方法について読み、3番目を完全に構成できるかどうか知りたい挿入のみにpglogicalを使用するサーバー。

私はパトロニに不慣れで、かなり迷っています。この問題に関する情報をいただければ幸いです。

2
ufk

私が見つけた唯一の方法は、pglogicalを構成するpsqlコマンドを実行するbashスクリプトを作成することです。

だから私はここに記載されているようにyamlにpost_bootstrapプロパティを追加しました: https://github.com/zalando/patroni/blob/master/docs/SETTINGS.rst

bashスクリプトはdatbase dsnをパラメーターとして受け取ります。これを使用して接続し、希望どおりに構成します。

私が知る限り、patroniから直接pglogicalを設定する方法はありません。

0
ufk