【发布时间】:2022-09-28 03:00:28
【问题描述】:
我们正在使用 pglogical(最新通过 yum 安装)将 Postgresql 从 9.6 升级到 14。复制工作正常,没有错误。然而,我们没有看到 v14 数据库上的任何 autovacuum 活动,即使我们继续在 v9.6 数据库上看到正常的 autovacuum 活动。此外,奇怪的是,死元组计数在 v14 数据库上没有变化,并且大多为 0。我确实在 v14 数据库上运行了VACUUM ANALYZE。
我们用来查看 autovacuum 活动的命令是
SELECT relname, last_vacuum, last_autovacuum, last_autoanalyze FROM pg_stat_user_tables;
我们用来查看死元组计数的命令是
SELECT relname, n_dead_tup FROM pg_stat_user_tables;
除了检查点通知外,日志中没有任何内容。这是随机挑选的一行:
2022-09-22 11:59:46 PDT [2877]: [15846-1] user=,db=,app=,client= LOG: checkpoint complete: wrote 38220 buffers (0.9%); 0 WAL file(s) added, 0 removed, 17 recycled; write=269.923 s, sync=0.025 s, total=269.962 s; sync files=264, longest=0.007 s, average=0.001 s; distance=313936 kB, estimate=329901 kB
v14 数据库正在流式传输到另一个充当副本的 v14 数据库。
这是预期的行为吗?
-
死元组通过 UPDATE/DELETE 而不是 INSERT/COPY 累积。您只是将数据从 9.6 -> 14 移动,还是 9.6 正在积极使用它正在复制更新和删除?
-
v9.6 数据库正在大量使用(网站的后端),包括更新/删除。正在传播删除。
-
1) Postgres 日志是否显示任何相关信息? 2) 当您查询
pg_stat_user_tables时,您是否在正确的数据库中?因为该视图的范围仅限于当前数据库。 -
除了检查点通知外,日志中没有任何内容(此节点未在生产中使用,但正在查询其流式副本)。我在原始问题中添加了一个有代表性的检查点日志行。我们在此节点上复制 6 个数据库,所有 6 个数据库的行为都是相同的。
-
您是否关闭了 track_counts?
标签: postgresql pglogical