繁体   English   中英

Postgres WAL 文件没有被删除

[英]Postgres WAL file not getting deleted

我有以下存档命令

archive_command = 'rsync -av %p /home/archive/%f'  

我们从那里清理文件。

但问题是文件复制到存档文件夹后,并没有从/var/lib/pgsql/9.6/data/pg_xlog删除。

我在 Postgres 日志中没有看到任何错误。 这是具有一主一备配置的 Postgres 9.6。

此外,了解处理这些旧 WAL 文件后删除这些文件的过程会很有帮助。

WAL 文件不会从pg_xlog删除的原因有几个:

  • max_wal_size设置为高于max_wal_size中的 WAL pg_xlog

  • wal_keep_segments设置为高于wal_keep_segments中的 WAL 文件pg_xlog

  • 在比 WAL 文件更旧的 WAL 位置有一个复制槽。

要了解复制槽,请尝试以下查询:

SELECT slot_name,
       lpad((pg_control_checkpoint()).timeline_id::text, 8, '0') ||
       lpad(split_part(restart_lsn::text, '/', 1), 8, '0') ||
       lpad(substr(split_part(restart_lsn::text, '/', 2), 1, 2), 8, '0')
       AS wal_file
FROM pg_replication_slots;

这将为您提供每个复制槽仍然需要的最旧 WAL 文件的名称。

我有同样的问题。 我删除了最旧的复制槽,postgres 清理了 pg_xlog。

postgres=# SELECT slot_name,
   lpad((pg_control_checkpoint()).timeline_id::text, 8, '0') ||
   lpad(split_part(restart_lsn::text, '/', 1), 8, '0') ||
   lpad(substr(split_part(restart_lsn::text, '/', 2), 1, 2), 8, '0')
   AS wal_file
FROM pg_replication_slots;
slot_name |         wal_file
-----------+--------------------------
 postgres2 | 0000000100000000000000B0
(1 row)

postgres=# select pg_drop_replication_slot('postgres2');
 pg_drop_replication_slot
--------------------------

(1 row)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM