检测后端是主服务器还是备用服务器
要检测 PostgreSQL 实例是主服务器(master)还是备用服务器(slave),请执行 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)
