阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放

现象:


1.用户升级之后,实例上磁盘空间以每分钟1g的速度不断增长,

2.高频dml表的空间不断变大但表数据其实不大,binlog大量产生

3.通过select * from innodb_tablespaces where name like '%undo%'发现undo 空间上涨较快,但阿里云监控视图显示正常。附问题截图:

##问题一磁盘持续增长

阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第1张图片

##问题二高频表截图


阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第2张图片

##问题三undo监控

阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第3张图片

阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第4张图片
排查过程:

阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第5张图片

 阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第6张图片

阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第7张图片

1.排查发现4.10 4:00后实例qps tps没有明显变化,但数据写入数据页落盘效率下降明显,怀疑是否是实例小版本升级后新特性造成异常于是联系阿里云
2. 查看事务提交和 undo 的 purge 速度。在监控中,可以看到事务大量提交,04/10 04:00 前后每秒提交事务 1万+,但是 purge 速度很慢,只有 1k+;
3. 分析 purge 慢的原因。发现 innodb_purge_threads = 1,即 purge 线程只有 1 个,于是建议用户增加 purge 线程,建议调整到 4;
4. 跟进发现 undo 空间继续增大,查看监控发现 undo purge 速度还是跟不上,于是建议用户调大 innodb_purge_batch_size;
5. 跟进发现 undo 空间还在快速增大,上述的调整起到的作用有限,有什么影响了 undo 的purge 速度。经排查,AliSQL小版本升级后新特性flashback 功能打开,经过确认,flashback 功能对 purge 速度有影响,暂时关闭 flashback 功能。
6. 关掉 flashback 之后,purge 速度恢复正常,空间恢复正常需要时间,大概几个小时。

7.从故障发现到阿里云排查解决历时58小时附图:

阿里云mysql8小版本升级造成磁盘不断增长,undolog持续增长不释放_第8张图片
注:Native Flashback Query为阿里云自研功能功能,支持直接通过SQL语句进行回滚查询和数据恢复
复盘分析:
1. 用户从 20200110 升级到 20221231 之后,参数模板没有补充新增的功能参数,flashback 功能打开了,影响了 undo 的purge;
2. 新增的 flashback 功能影响 purge 的问题,后续会继续优化这个功能;
3. 先关闭 flashback 功能,一段时间后即可恢复正常。 

 

4.云实例建议关闭自动升级,定期查看小板更新内容评估后再统一升级

相关资料

阿里云内核更新文档:AliSQL的内核版本更新说明_关系型数据库-阿里云帮助中心

Native Flashback功能可以通过SQL语句查询或恢复指定时间点的数据,保证在误操作后可以快速获取历史数据。

Native Flashback功能介绍:NativeFlashback语法、参数和示例_关系型数据库-阿里云帮助中心

你可能感兴趣的:(开发语言,mysql,阿里云)