ITPub博客

首页 > Linux操作系统 > Linux操作系统 > MySQL 磁盘爆了,是 optimize table 的锅

MySQL 磁盘爆了,是 optimize table 的锅

原创 Linux操作系统 作者:张冲andy 时间:2023-06-27 11:07:58 0 删除 编辑

2 0 2 3 - 0 6 - 2 6   2 2 : 1 7 左 右 , 收 到 某 系 统 的 主 库 磁 盘 使 用 率 告 警 。 2 0 2 3 - 0 6 - 2 6   2 3 : 0 2 左 右 收 到 该 系 统 的 从 库 磁 盘 使 用 率 告 警 。


收 到 告 警 后 , 登 录 数 据 库 查 看 各 表 的 磁 盘 使 用 。

经 分 析 发 现 D B 存 在 一 个 当 日 的 备 份 表 t _ e a p _ s y s _ n a v i g a t i o n _ l o g _ b a k _ 2 0 2 3 0 6 2 6   , 且 在 O S 层 面 存 在   命 名 异 常 的 表 文 件 ( # 开 头 ) , 按 照 经 验 推 断 # 开 头 为 中 间 表 , 磁 盘 使 用 率 告 警 恢 复 后 , 该 中 间 表 也 不 存 在 了 。

通 过 p r o x y s q l 中 间 件 获 取 t _ e a p _ s y s _ n a v i g a t i o n _ l o g _ b a k _ 2 0 2 3 0 6 2 6 的 操 作 记 录 , 该 表 的 确 存 在       O P T I M I Z E   t a b l e     与   A N A L Y Z E   t a b l e   行 为 。

真 相 大 白 , 经 核 实 , 有 同 事 对 t _ e a p _ s y s _ n a v i g a t i o n _ l o g 实 施   r e n a m e   - >   A N A L Y Z E   - >   O P T I M I Z E   操 作 。   O P T I M I Z E   t a b l e   会   r e c r e a t e   +   a n a l y z e   t a b l e , 而   r e c r e a t e   1 8 G 大 表 会 产 生   1 8 G 的 中 间 表 , 造 成 了 磁 盘 使 用 率 的 急 剧 上 升 ,   r e c r e a t e   完 成 后   同 步 到 从 库 且   会 清 理 中 间 表 , 磁 盘 使 用 率 恢 复 正 常 。

M y S Q L   中   o p t i m i z e   t a b l e 、 a n a l y z e   t a b l e   和   a l t e r   t a b l e   e n g i n e   的 区 别

  • a l t e r   t a b l e   t   e n g i n e   =   I n n o D B ( 也 就 是   r e c r e a t e )

  • a n a l y z e   t a b l e   t   不 是 重 建 表 , 只 是 对 表 的 索 引 信 息 做 重 新 统 计 , 没 有 修 改 数 据 , 这 个 过 程 中 加 了   M D L   读 锁 ;

  • o p t i m i z e   t a b l e   t   等 于   r e c r e a t e   +   a n a l y z e 。

  • optimize table、analyze table 和 alter table engine 都会由主库同步到从库,需要注意大表recreate的 磁盘空间消耗,主从延迟等影响


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31383567/viewspace-2960902/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
支持就关注我个人公众号:DBA烂笔头 。专注数据库领域,熟悉oracle、mysql、redis、mongodb,clickhouse等相关技术

注册时间:2016-08-11

  • 博文量
    626
  • 访问量
    286293