我已经配置了使用复制槽的流复制。我已经检查了视图
pg_replication_slots
,其中包含restart_lsn pg_lsn
这个槽位的使用者可能仍需要最老的WAL(LSN)地址,因此在检查点期间不会自动删除。
我想找到我的备用机需要的最小WAL,在主服务器归档相同之前。
我考虑将LSN转换为WAL,但我找不到任何命令。请帮我解决这个问题。
pg_replication_slots
,其中包含restart_lsn pg_lsn
这个槽位的使用者可能仍需要最老的WAL(LSN)地址,因此在检查点期间不会自动删除。
我想找到我的备用机需要的最小WAL,在主服务器归档相同之前。
我考虑将LSN转换为WAL,但我找不到任何命令。请帮我解决这个问题。
(FF000000 * xlog_master + offset_master) - (FF000000 * xlog_replica + offset_replica)
psql -t -c "select pg_walfile_name('9F81/724931C8');"
PostgreSQL < 10:
psql -t -c "select pg_xlogfile_name('9F81/724931C8');"
会给你一个像这样的数字:
0000000100009F8100000072
假设您的服务器正在运行时间线1(前8位数字00000001
)
您可以使用pg_controldata
来查找您的服务器正在运行的时间线
/usr/lib/postgresql/10/bin/pg_controldata /var/lib/postgresql/10/main/
考虑使用pg_xlogfile_name - 它接受日志序列号并“生成”WAL
文件名以供查找。
pg_xlogfile_name(位置 pg_lsn)文本 将事务日志位置字符串转换为文件名
select min(pg_xlogfile_name(replay_location)) from pg_stat_replication
?谢谢。 - undefinedpg_xlogfile_name
函数现在被称为pg_walfile_name
。 - undefined