postgresql-WAL激增相关

现象:wal激增,超过了wal_keep_segments

​ 如果开了归档,不成功就一直保存——手动执行归档命令检查
​ 复制槽 FALSE——pg_replication_slots
​ 主备同步失败——pg_stat_replication
​ 长事务存在——pg_stat_activity where EXTRACT(EPOCH FROM (now()-query_start))>60

什么时候归档?

​ select pg_switch_wal();

​ wal写满一个16M的文件之后

​ 达到archive_timeout

问题:wal堆积

处理:

  • 检查保存个数

    select current_setting('wal_keep_segments') as wal_keep_segments,(select count(1) from pg_ls_dir('./pg_wal/')) as dir ;

  • 检查 hot_standby、hot_standby_feedback

  • 检查复制槽 pg_replication_slots

  • 检查长事务

  • 如果归档失败的,可以用pg_archivecleanup先清

问题:wal堆积,status大量ready归档正常

排查archive进程是否正常,正在归档哪一个,正在归档之后的wc -l 和ready是否对的上

处理:

  • archive_command 可手动执行检查是否报错,或观察archive 进程是否有推进

  • 检查服务器io

  • 关闭归档,或者archive_command='echo 0';

  • 快速释放ready文件:

​		find *.ready | sed 's/.ready$//'| xargs -I {} mv {}.ready {}.done

​		select pg_switch_wal(); 

​		checkpoint;
  • 观察wal数量是否有减少
posted @   y_dou  阅读(82)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示