如何优雅的删除 Zabbix 中的 history_str 相关历史大表

0    16    1

Tags:

👉 本文共约1375个字,系统预计阅读时间或需6分钟。

问题背景:

前段时间,客户反馈 Zabbix 实例的 history_str 表数据量很大,导致磁盘空间使用率较高,想要清理该表,咨询是否有好的建议。想着正好最近学习了相关的知识点,正好可以检验一下学习成果,经过实践的检验,最终考试合格,客户也比较满意,于是便有了此文。

如何优雅的删除 Zabbix 中的 history_str  相关历史大表

问题沟通:

通过实际查看环境及与客户沟通,得出以下信息:

  1. 现场是双向主从复制架构,未设置从库read_only只读。

  2. history_str 表的ibd数据文件超460G。

  3. history_str 表的存量数据可以直接清理。

4.现场实例所在的服务器是虚拟机,配置较低。

因此,综合考虑后建议客户新建相同表结构的表然后对原表进行 drop 操作,但是表数据量比较大,需要考虑以下风险:

  1. drop大表可能会导致实例hang住,影响数据库正常使用。

  2. drop大表操作导致主从延时。

  3. 删除大文件造成磁盘io压力较大。

如何优雅的删除 Zabbix 中的 history_str  相关历史大表

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

最终方案:

在考虑以上的基础上,最终给出如下方案:

  1. 在主库执行如下命令建立相同表结构表并进行rename操作:

  1. 在主库和从库执行以下操作,建立硬链接文件:

如何优雅的删除 Zabbix 中的 history_str  相关历史大表

  1. 完成第二步后,建议间隔一两天再进行操作,让history_str_old 表数据从 innodb buffer pool 中冷却,然后业务低峰期在主从库分别执行如下操作,建议先操作从库,从库验证没问题后再在主库操作:

如何优雅的删除 Zabbix 中的 history_str  相关历史大表

  1. 删除 history_old.ibd.hdlk 文件,释放空间,可以通过 linux 的 truncate 命令实现,参考脚本如下:

示例:sh truncateFile.sh history_str_old.ibd.hdlk 256 1,表示删除 history_str_old.ibd.hdlk 文件,每次截断大小为256M,然后sleep间隔为1s。

如何优雅的删除 Zabbix 中的 history_str  相关历史大表

  1. 到此,静静等待就行了。无聊的话也可以思考一下人生。

小知识:

前面解决了如何操作的问题,但是作为一个称职的DBA,不光要知道如何做,还得知道为什么这么做,不然的话,敲回车键容易,后悔却很难,干货来了,一起了解一下吧。下次遇到类似问题就不慌了。

tips1:

tips2:

tips3:

参考

https://mp.weixin.qq.com/s/p_xPhv9MKwKH3BnqSDEETg

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部