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を使用するサーバー。
私はパトロニに不慣れで、かなり迷っています。この問題に関する情報をいただければ幸いです。
私が見つけた唯一の方法は、pglogicalを構成するpsqlコマンドを実行するbashスクリプトを作成することです。
だから私はここに記載されているようにyamlにpost_bootstrapプロパティを追加しました: https://github.com/zalando/patroni/blob/master/docs/SETTINGS.rst
bashスクリプトはdatbase dsnをパラメーターとして受け取ります。これを使用して接続し、希望どおりに構成します。
私が知る限り、patroniから直接pglogicalを設定する方法はありません。