将pg_LSN转换为wAL postgresql

时间:2016-07-21 06:30:40

标签: postgresql postgresql-9.4

我已使用复制槽配置了流复制。我检查了包含

的视图pg_replication_slots
restart_lsn pg_lsn

此广告位的消费者可能仍然需要的最早LSN的地址(WAL),因此在检查点期间不会自动删除。

我希望在主存档之前找到备用数据库所需的最小WAL

我想过将LSN转换为WAL,但我无法找到任何命令。请帮帮我。

2 个答案:

答案 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/