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