【发布时间】:2021-03-18 10:03:22
【问题描述】:
在两个不同的区域有两个 postgresql 表,我想在两个数据库中只同步一个表。有可能吗?
【问题讨论】:
-
使用发布订阅逻辑复制方式。
标签: database postgresql synchronization streaming
在两个不同的区域有两个 postgresql 表,我想在两个数据库中只同步一个表。有可能吗?
【问题讨论】:
标签: database postgresql synchronization streaming
我用 pgloical 弄明白了他的。
(Docker PostgreSQL) 使用 pglogical 进行双向复制
docker volume create sync_test_1docker run --name sync_test_1 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=qwerty1234 -p 5433:5432 -d -v sync_test_1:/var/lib/postgresql/data postgres:9.5.23docker volume create sync_test_2docker run --name sync_test_2 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=qwerty1234 -p 5434:5432 -d -v sync_test_2:/var/lib/postgresql/data postgres:9.5.23docker exec -it sync_test_1 /bin/bashapt -y updateapt install -y vimapt install -y procpsapt install -y postgresql-9.5-pglogicalvi /var/lib/postgresql/data/postgresql.conf
wal_level = logicaltrack_commit_timestamp = on在此处输入代码shared_preload_libraries = ‘pglogical’max_replication_slots = 10docker restart sync_test_1create database localharvestpsql -U postgres localharvestCREATE EXTENSION pglogical;SELECT pglogical.create_node(node_name := 'db1_local', dsn := 'host=127.0.0.1 port=5432 dbname=localharvest user=postgres password=qwerty1234');SELECT * FROM pglogical.replication_set;SELECT pglogical.replication_set_add_table(‘default’, ‘users’);ALTER SEQUENCE users_id_seq RESTART WITH 1 INCREMENT 20;add ‘host replication postgres 172.17.0.1/32 trust’ in /var/lib/postgresql/data/pg_hba.confSELECT pglogical.create_subscription(subscription_name := 'db2_subscription', forward_origins := '{}', provider_dsn := 'host=host.docker.internal port=5434 dbname=localharvest user=postgres password=qwerty1234');参考:https://eradman.com/posts/active-active-pglogical.html From inside of a Docker container, how do I connect to the localhost of the machine? https://github.com/2ndQuadrant/pglogical https://www.2ndquadrant.com/en/resources/pglogical/pglogical-docs/#Replication-sets
【讨论】: