postgresql postgres数据库中的pg_wal目录已满

6za6bjd0  于 2022-12-12  发布在  PostgreSQL
关注(0)|答案(1)|浏览(360)

我有postgres 10的pg_wal已满。我有文件pg_wal目录从2020年12月。我已启用“存档”,但我得到归档程序错误,我的应用程序停止工作。由于这个问题是在生产,我已禁用存档。
从日期为2020年12月和2021年1月的pg_wal中删除旧文件是否安全?
我可以看到:

postgres=# SELECT * FROM pg_replication_slots;

 slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn  | c onfirmed_flush_lsn
-----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+--------------+---------------------
  m9t0179g |        |  physical |        |          |         f |      f |            |      |              |   50/B780000 |
       m9t |        |  physical |        |          |         f |      f |            |      |              | 3B0/EB000920 |
kwvwclae

kwvwclae1#

否。从不手动删除文件。
如果你将archive_mode设置为off(并重新启动)或者将archive_command更改为类似/bin/true的内容(并重新加载),那么PostgreSQL将开始自行删除旧的WAL段。
如果单凭这一点还不能解决问题,那么一定还有其他东西会阻止删除WAL段,比如一个过时的复制插槽。

SELECT pg_drop_replication_slot('m9t0179g');
SELECT pg_drop_replication_slot('m9t');

这两个插槽都是可疑的,因为它们不是active,即当前未使用。至少第一个插槽肯定是过时的,因为它比第二个插槽落后3.5 TB。

相关问题