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 完 成 后 同 步 到 从 库 且 会 清 理 中 间 表 , 磁 盘 使 用 率 恢 复 正 常 。
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/ ,如需转载,请注明出处,否则将追究法律责任。