我想听听关于WAL管理的建议。我期望有大量的wal文件(数据库非常大,总共有3000万到4000万条记录),因为我正在为一些表设置一个逻辑复制。
目前,使用此查询:
SELECT COUNT(*) FROM pg_ls_dir('pg_wal') WHERE pg_ls_dir ~ '^[0-9A-F]{24}';我找到了6817个文件。我的目标是将这个数目减少到最多10到20个文件。
我在Ubuntu20.04上使用PG 12.11
谢谢。顺便说一句,我是新加入PG的。
发布于 2022-07-11 12:00:22
WAL段不是永远保存在周围的文件。在它们被归档并且不再是崩溃恢复所必需的之后,PostgreSQL会自动删除它们。对于数据损坏的痛苦,您绝不能手动修改pg_wal中的任何内容(或者数据目录中的任何位置(配置文件除外))。
减少WAL数量的正确方法是设置max_wal_size,但请注意,较小的值会导致写入I/O的增加,这不利于性能。
尽管如此,您的数据库集群还是有问题的。如果使用默认的WAL段大小,则必须有超过100 of的WAL。这清楚地表明出了一些问题。要么存档程序不工作(检查pg_stat_archiver),要么有一个过时的复制槽阻止WAL (check pg_replication_slots)。一旦您修复了问题,运行CHECKPOINT (或等待下一个单独发生),PostgreSQL将删除额外的WAL段。
还有一种可能是将wal_keep_size (旧版本上的wal_keep_segments)设置为非常高的值。
https://dba.stackexchange.com/questions/314260
复制相似问题