更新时间:2023-12-27 GMT+08:00
ibdata1为什么会变大
原因分析
ibdata1是InnoDB的系统表空间,主要包括:
- 多版本并行事务控制(MVCC)相关的数据:undolog
- Innodb表的元数据,如数据字典
- change buffer/double write buffer等
其中,undolog是ibdata1增大的最主要原因,而undolog过大的主要原因如下:
- 长事务久未提交,导致undolog purge被阻塞。
- 写入并发太大生成大量的undolog,purge速度跟不上。
通过show engine innodb status中的“History list length”可以查看未被purge的undolog数量。
解决方案
- 如果主库的ibdata1过大,备库的不大,则进行主备倒换。
- 如果备库的ibdata1过大,主库的不大,则联系客服重建备库。
- 如果一个实例所有库的ibdata1都大,则通过DRS迁移数据。
父主题: 性能资源类