1

我有一个大型且快速增长的 PostgreSQL 表(166GB 索引和 72GB 数据库)。我想设置这个表的逻辑复制。两边都是 11.4 版本。

我尝试这样做 2 周,但我唯一拥有的是无限同步和不断增长的副本上的表大小(已经 293 Gb 索引和 88 Gb 表,超过原始,并且日志中没有错误)。我也尝试进行转储,恢复它并开始同步 - 但现有主键出现错误。复制统计信息的 backend_xmin 值每周更改一次,但同步状态仍为“启动”。这些服务器之间的网络连接根本没有使用(它们在同一个数据中心),实际速度为 300-400Kb(看起来它主要是复制过程的流式传输部分)。

所以问题是如何正确设置大型且快速增长的表的逻辑复制,是否有可能以某种方式?谢谢你。

4

2 回答 2

2

我尝试这样做 2 周,但我唯一拥有的是无限同步和不断增长的副本上的表大小(已经 293 Gb 索引和 88 Gb 表,超过原始,并且日志中没有错误)。

删除副本上的非身份索引,直到同步完成。

于 2019-08-28T14:53:31.180 回答
1

问题一模一样 查看日志发现如下错误:

ERROR:  could not receive data from WAL stream: ERROR:  canceling statement due to statement timeout

由于大表,复制因超时而下降通过增加超时,问题就消失了

PS 理想情况下,为复制和主库设置单独的超时会更酷。

于 2021-03-12T11:08:12.627 回答