根据报错信息,在主库上执行长时间查询过程中,由于此查询涉及的记录有可能在主库上被更新或删除,根据 PostgreSQL的mvcc机制,更新或删除的数据不是立即从物理块上删除,而是之后autovacuum...进程对老版本数据进行 VACUUM,主库上对更新或删除数据的老版本进行 VACUUM后,从库上也会执行这个操作,从而与从库当前查询产生冲突,导致查询被中断并抛出以上错误。...在主库pgMaster 上创建测试表:
\c postgres
create table test_per2 ( id int , flag int);
insert into test_per2 (...,从库执行大查询过程中,主库不会清理从库需要用到的数据行老版本。...这两种方式无论选择哪一个都应该加强对流复制主库、备库慢查询的监控,并分析是否需要人工介入维护。