У меня есть 3 сервера с Ubuntu 19.10, PostgreSQL 12.2 и Patroni 1.6.4, и я хотел бы иметь следующую настройку:
Я хочу иметь два сервера с синхронизированной репликацией, и я хочу добавить третий сервер с репликацией pglogical, чтобы принимать вставки в определенные таблицы. никаких DELETE, TRUNCATE или чего-либо еще.
Я регистрирую огромное количество покупок в день, около 300 миллионов. Я хочу, чтобы на серверах уже была история покупок за последние 30 дней, а на третьем сервере с очень большим хранилищем будет храниться вся история покупок.
Пока у меня есть кластер patroni с 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.
Я читал о том, как настроить pglogical с помощью https://blog.dbi-services.com/postgresql-logical-replication-with-pglogical/ и я хотел бы знать, могу ли я полностью настроить 3-й сервер с pglogical только для вставок.
Я новичок в Patroni и довольно растерян, поэтому я буду благодарен за любую информацию по этому вопросу.
единственный способ, который я нашел для этого, - это создать сценарий bash, который выполняет команды psql, которые настраивают pglogical.
поэтому я добавил свойство post_bootstrap в yaml, как указано здесь: https://github.com/zalando/patroni/blob/master/docs/SETTINGS.rst
сценарий bash получает dsn базы данных в качестве параметров, я использую его для подключения к нему и настройки того, что мне нравится.
Насколько я знаю, нет возможности настроить pglogical напрямую из patroni.