首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WAL档案管理

WAL档案管理
EN

Database Administration用户
提问于 2022-07-11 10:49:47
回答 1查看 465关注 0票数 0

我想听听关于WAL管理的建议。我期望有大量的wal文件(数据库非常大,总共有3000万到4000万条记录),因为我正在为一些表设置一个逻辑复制。

目前,使用此查询:

代码语言:javascript
复制
SELECT COUNT(*) FROM pg_ls_dir('pg_wal') WHERE pg_ls_dir ~ '^[0-9A-F]{24}';

我找到了6817个文件。我的目标是将这个数目减少到最多10到20个文件。

  1. 如何做到这一点,而不影响任何其他事情,如恢复等?目前,最小WAL大小为1GB,最大值为4GB。
  2. 假设我只想要10个文件。如何压缩其余的6807文件?
  3. 如果我想自动完成整个过程,我必须做什么/设置?

我在Ubuntu20.04上使用PG 12.11

谢谢。顺便说一句,我是新加入PG的。

EN

回答 1

Database Administration用户

发布于 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)设置为非常高的值。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/314260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档