检测后端是主节点还是备节点
要检测 PostgreSQL 实例是主节点(主服务器)还是备节点(从服务器),请执行 pg_is_in_recovery()
;TRUE
表示后端正在“恢复”,即正在重放 WAL 文件,因此是备节点;FALSE
因此表示该实例为主节点(或独立实例)。
postgres=# SELECT pg_is_in_recovery(); pg_is_in_recovery ------------------- t (1 row)
或者,还可以使用 pg_last_wal_replay_lsn()
(PostgreSQL 9.6 及更早版本:pg_last_xlog_replay_location()
) 返回的事务日志位置的存在。
postgres=# SELECT pg_last_wal_replay_lsn () IS NOT NULL; ?column? ---------- t (1 row)