Zabbix记一次MySQL爆盘恢复操作

使用Zabbix记录了MySQL内存爆盘到binlog数据自动删除从而恢复。
记一次MySQL爆盘操作记录
爆盘MySQL为测试环境下的zabbix的数据库,该环境MySQL原本设计为双主高可用架构MySQL,两台数据库的数据盘均为500G,如果按现有节点量级计算,500G挺富足的。
当天收到客户反馈测试的zabbix打不开了,经过排查,发现是zabbix的数据满了,数据无法写入导致,正纳闷500G测试环境应该绰绰有余的,怎么会有这么多数据呢?排查了数据库的数据目录文件大小,其中数据库的错误日志就有3G多,空间使用量最大的是binlog文件,共产生接近300G的binlog文件,跑到另一台MySQL上查看结果发现两边的数据库早就不同步,甚至两边的库都不一样了,主库还有一个zabbix1测试库,而从库上连zabbix1的测试库都没有,可想而知是有多久没同步了。
由于只是数据库无法写入数据了,依然可以进入数据库,但由于数据库已经满了,担心操作会造成数据库损坏,于是先请客户对硬盘进行扩容,扩容了50G后敢对数据库进行操作了。先用命令连接进入数据库(当时未进行截图,以下图片为后期测试所做)
#mysql -uroot -pp@ssw0rd
mysql> show binary logs;                 #获取binlog文件列表1TQqaNnu62d510085bc72.png
mysql> show master status;         #查看当前正在写入的binlog文件98ZU0bfB62d5101476ce5.png
mysql> purge binary logs to “mysql-bin.000012”;                #清除12前的binlog文件,对应binlog 存放目录下对应的文件会被删除,mysql-bin.index 文件对应的名字也会被清除3o0tXxt662d5101c32d61.png
mysql> show variables like ‘expire_logs_days’;     #查看 binlog自动删除规则
expire_logs_days = 0
0,意思是不限制
mysql> set global expire_logs_days = 3;                         #动态设置binlog日志只保留3天UW8OWDcE62d5102603b50.png
mysql> show variables like ‘expire_logs_days’;     #查看 binlog自动删除规则
expire_logs_days = 0
0,意思是不限制
mysql> set global expire_logs_days = 3;                         #动态设置binlog日志只保留3天
由于两台MySQL已经不同步了,且该环境为测试环境,重启MySQL就好了。
另一台也同样操作,待两台MySQL都已正常后在进行同步配置即可。
现实场景中binlog的保存天数根据需求而定,还有千万别在MySQL数据库爆满的情况下随意关闭MySQL,尤其是当无法扩充硬盘的情况,一定要保证有一定空间供MySQL进行操作。

0 条评论

请先 登录 后评论
乐维君
乐维君

351 篇文章

作家榜 »

  1. 乐维君 351 文章
  2. YOHOHO 14 文章
  3. 机灵小和尚 13 文章
  4. 我是一只小菜鸡 12 文章
  5. 细雨闲花 11 文章
  6. 御前侍卫张五哥 9 文章
  7. 。。。 8 文章
  8. 小黄人 8 文章