某天postgres xl集群执行pgxc_ctl stop all命令关闭集群,并重启集群,连接某节点,发觉读取某张表出现了以下错误


postgres=# select count(*) from t4;

ERROR:  Snapshot too old - RecentGlobalXmin (260760) has already advanced past the snapshot xmin (210218)

postgres=# 


查看第一个节点的txid,如下

postgres=#  select txid_current();

 txid_current 

--------------

       210218

  

查看第二个节点txid,如下   

postgres=# select txid_current();

 txid_current 

--------------

       260762

(1 row)   



这个问题是因为节点之间txid不一致问题引起,


解决方法,执行以下命令关闭集群并重新启动,txid节点就会一致

pgxc_ctl "stop -m immediate all"