更新时间:2024-10-24 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迁移数据。