將具有 pglogical 複製的第 3 台伺服器添加到具有流同步複製的 2 台伺服器集群中,並使用贊助人進行故障保護
我有 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。