我有 3 台服务器,分别安装有 Ubuntu 19.10、PostgreSQL 12.2 和 Patroni 1.6.4,我希望进行以下设置:
我想要拥有两台具有同步复制的服务器,并且我想添加具有 pglogical 复制的第三台服务器,仅用于接受对特定表的插入。没有 DELETE、TRUNCATE 或其他任何东西。
我每天记录大量的购买记录,大约 300M。我希望两台服务器已经拥有过去 30 天的购买历史记录,第三台服务器拥有非常大的存储空间,可以保存所有的购买历史记录。
到目前为止,我有一个带有 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
由于第三台服务器,我添加了 pglogical 作为共享库,我想知道是否可以使用 Patroni 进行完全设置。
我读过关于如何使用设置 pglogicalhttps://blog.dbi-services.com/postgresql-logical-replication-with-pglogical/我想知道是否可以使用 pglogical 完全配置第 3 个服务器仅用于插入。
我是 Patroni 的新手,并且我很迷茫,因此如果能提供与此问题相关的任何信息我将非常感激。
答案1
我发现唯一的方法是创建一个 bash 脚本,执行配置 pglogical 的 psql 命令。
因此我在 yaml 中添加了 post_bootstrap 属性,如下所示:https://github.com/zalando/patroni/blob/master/docs/SETTINGS.rst
bash 脚本接收数据库 dsn 作为参数,我使用它来连接它并配置我喜欢的内容。
据我所知,没有办法直接从 patroni 配置 pglogical。