我已使用复制槽配置了流复制。我检查了包含
的视图pg_replication_slots
restart_lsn pg_lsn
此广告位的消费者可能仍然需要的最早LSN
的地址(WAL
),因此在检查点期间不会自动删除。
我希望在主存档之前找到备用数据库所需的最小WAL
。
我想过将LSN
转换为WAL
,但我无法找到任何命令。请帮帮我。
答案 0 :(得分:0)
使用pg_xlogfile_name的concider - 它需要日志序列号和"生成"要查找的WAL
文件名。
pg_xlogfile_name(location pg_lsn)text转换事务日志 位置字符串到文件名
答案 1 :(得分:0)
可以使用this formula将LSN转换为WAL文件名:
(FF000000 * xlog_master + offset_master) - (FF000000 * xlog_replica + offset_replica)
在任何PostgreSQL实例上运行以下命令(最好运行相同的主要版本):
PostgreSQL> = 10:
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/