暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MogDB - 处理由于废弃事务槽导致的walfile写放大问题一则

原创 伊织鸟 2024-10-15
271

现象说明

一套运行很久的生产MogDB数据突然出现了文件目录突发性增长导致空间报警,检查后,发现pg_xlog已经达到了260GB+,而对应的数据文件目录一共才60GB+,逐判断出现walfile写放大现象。
图片.png

现象分析

会导致walfile写放大的原因有很多,其中两个最大可能性是由于参数设置不当和逻辑复制失败,文中也是从两个角度入手,快速定位处理问题。

处理流程

生产上的这套数据的高可用架构较为复杂,一主/一同步备/一异步备/一级联,其中级联从同步备同步数据,并将数据副本提供给读应用使用。

1、检查xlog自动清理参数

检查walfile保留参数和walfile自动清理参数,参数设置正常

show wal_keep_segments; show enable_xlog_prune; show max_size_for_xlog_prune;

图片.png

2、检查逻辑复制

发现不分逻辑复制槽状态异常,于用户沟通后,用户叙述一开始尝试使用DSG工具进行数据同步,后由于各种问题,使用级联替换了DSG同步,但是未清理DSG痕迹。

select * from pg_stat_replication; select * from pg_replication_slots;

图片.png

3、核对事务槽停止的restart_lsn

查看对应的xlogfile_name,是否对应到xlogfile最旧的文件

select pg_xlogfile_name('B1/BF79AD78'); ls -lt $PGDATA/data/pg_xlog

图片.png

图片.png

4、手工删除逻辑复制槽

在跟用户汇总故障细节后,确定手动删除复制槽

select pg_drop_replication_slot('dsg_slot');

图片.png

5、等待结果

等待10分钟后,发现pg_xlog目录有260GB降为53GB

du -sh $PGDATA/data/pg_xlog

图片.png

总结:

以下原因会导致walfile堆积/写放大:

  • 1、wal_level设置不当,walfile记录信息过多
  • 2、archive_dest参数设置不当,导致walfile无法正常归档,形成堆积
  • 3、复制槽慢速/故障,也会导致备库无法应用walfile,导致堆积
  • 4、由于full_page_write参数设置,导致walfile信息变多变大
  • 5、由于更新导致的ctid变化,引起的索引页变更,也会导致索引页写wal buffer,变相导致walfile体积变大
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论