我有两台数据库服务器192.168.150.210
,192.168.150.220
并且成功地为逻辑复制创建了发布和订阅。
两台服务器上都修改了 postgresql.conf 文件。
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
在两台服务器上,wal 级别都设置为逻辑。
testha=# show wal_level;
wal_level
-----------
logical
(1 row
pg_hba.conf 文件在两台服务器上都被修改:
在服务器 192.168.150.210
host all all 192.168.150.220/32 md5
在服务器 192.168.150.220
host all all 192.168.150.210/32 md5
使用用户 postgres 我在数据库 testha 上创建了表格文章
\c testha
create table article(idart int primary key,name varchar(10), quantity int);
以防万一我还授予用户 postgres/postgres 对该表的权限
grant all on article to postgres;
我在服务器 192.168.150.210 上创建了发布
CREATE PUBLICATION mypub FOR TABLE article;
我可以看到一切正常:
CREATE SUBSCRIPTION mysub CONNECTION 'dbname=testha host=192.168.150.210 user=postgres password=postgres port=5432' PUBLICATION mypub;
我测试了服务器之间的连接和通信是好的:
psql -h 192.168.150.220 -U postgres -W
psql -h 192.168.150.210 -U postgres -W
我重新启动了服务器,但在日志中我看到了错误:
ERROR: replication slot "mysub" was not created in this database
ERROR: could not start WAL streaming: ERROR: replication slot "mysub" was not created in this database
LOG: background worker "logical replication worker" (PID 30667) exited with exit code 1
我究竟做错了什么。我遵循了多个站点的说明,但没有找到任何其他说明。 https://blog.dbi-services.com/postgresql-10-beta-1-logical-replication/
这个命令的输出是什么?
你应该得到类似的东西:
或者
听起来这里发生的事情是,在您创建订阅时,发布者正在按预期运行。但是后来你做了一些奇怪的事情,比如断开订阅者,将发布者上的数据库“testha”重命名为其他东西,创建一个新的“testha”并尝试重新连接订阅者。