这可能是一个非常基本的问题,但我正在努力解决它。我正在尝试在两个独立的服务器之间设置逻辑解码。
在Master上,我已经进行了设置,以便对表(INSERT,UPDATE,DELETE)所做的更改发送到我的逻辑复制槽,我可以使用pg_logical_slot_get / peek_changes函数查看更改 - 全部在我的主服务器上。
在Slave上,我正在尝试运行pg_revclogical命令(使用命令提示符),但是,我似乎无法接收对Master进行的更改。我意识到我没有告诉2彼此沟通的地方。我试图将主机定义为Master来告诉复制过程我必须将更改从Master转移到Slave。
我已经对postgresql.conf(wal_level = logical; max_replication_slots = 3; max_wal_senders = 3)和pg_hba.conf(无论它告诉我如何修复错误)所做的所有更改都在Master和奴隶。 pg_recvlogical命令和生成的错误消息如下所示。有人可以帮助我让我的主人和奴隶沟通吗?
pg_recvlogical --start --slot=wendy_test --plugin=test_decoding --dbname=testdb --file=C:\Logical_Decoding_Test.log --username=dbaadmin --host=127.##.##.### --port=5432
当我在Slave上执行此命令时,我没有收到任何错误消息,但它也没有返回到命令提示符?虽然它正在做它的事情,我可以检查数据库并看到wendy_test插槽是活动的,所以它似乎在做某事。但是,当我在我的主人的表格中插入一行时,我的奴隶上没有任何事情发生(即使在5分钟后)。
我可以添加用于创建复制槽的所有代码,填充队列等等。我试图限制读取量并将其视为更基本的。此外,我的最终游戏是将其转换为我们的AWS RDS系统作为我们的奴隶,因此对此的任何建议也受到赞赏。感谢你的时间。