数据库硬盘空间可用小于90%解决的方案

一.问题描述我司在某云的MySQL数据库占硬盘空间大于90%,RDS空间总空间为 700G,表A分析之后 。某渠道统计的表有5亿,单表空间超过350G 。
服务器架构:一主多从 。

数据库硬盘空间可用小于90%解决的方案

文章插图
 
报警截图:
数据库硬盘空间可用小于90%解决的方案

文章插图
 
二.处理流程1.解决方法一:钞能力,增加RDS硬盘空间,剧终!但是会有大表查询效率问题,数据到达一定量还是需要会出现同样的问题 。
 
2.解决方法二:
  1. 备份表A(mysqldump、xtrabackup等)
  2. 跟研发沟通,新建相同表结构B,将业务数据写入表B中,跑一段时间无问题 。【实际业务中,将此表按月分表】
  3. 截断表A,释放硬盘空间(不会导致主从延迟) 。
  4. 定时任务:定期备份删除过期数据 。
 
涉及到的知识点:mysql备份(鄙视一下某云,某云备份居然还要收费) 。
截断表是否会导致主从延迟(不会) 。
 
表空间分析
数据库硬盘空间可用小于90%解决的方案

文章插图
 
mysqldump 备份命令mysqldump -u 用户名 -h 数据库地址 -p '密码' --opt 数据库名 表名 > /data/备份文件名.sql备份表的时候报错:
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `XXXXX` at row: 686431【数据库硬盘空间可用小于90%解决的方案】 
有报错,于是发工单,某云客服推荐使用DMS导出
数据库硬盘空间可用小于90%解决的方案

文章插图
 
备份的时候影响小部分性能,但是免费居然超过免费额度 。本着能免费,为啥要收费呢,真的是无语了,浪费几个小时!
导出失败: 您当前使用的数据库实例管控模式为“自由操作”,已超出免费额度1,000,000 。如您需要继续操作请调整实例管控模式为“稳定变更”、“安全协同”后再进行
数据库硬盘空间可用小于90%解决的方案

文章插图
 
域名是修改数据库配置,再用mysqldump 将表导出 。
修改数据库配置
数据库硬盘空间可用小于90%解决的方案

文章插图
 
再用mysqldump导出数据库,等了将近十几个小时之后终于备份成功,大小为193G
mysqldump -u 用户名 -h 数据库地址 -p '密码' --opt 数据库名 表名 > /data/备份文件名.sql新上一张表实际在跟研发沟通,按月来做分表 。比如:表名+日期 table_2208
数据库硬盘空间可用小于90%解决的方案

文章插图
 
截断表之后的硬盘总大小
数据库硬盘空间可用小于90%解决的方案

文章插图
 
删除表和截断表命令之间的区别表删除包括表的定义和关联对象(规则、索引、约、触发器、主键,等) 。很明显,一旦表被删除,那么表中包含的所有的数据行都会被一同删除 。


推荐阅读