前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库硬盘空间可用小于90%解决的方案

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

原创
作者头像
星哥玩云
发布2022-08-09 10:05:02
9320
发布2022-08-09 10:05:02
举报
文章被收录于专栏:开源部署开源部署

一.问题描述

我司在某云的MySQL数据库占硬盘空间大于90%,RDS空间总空间为 700G,表A分析之后。某渠道统计的表有5亿,单表空间超过350G。

服务器架构:一主多从。

mysql-kongjian.webp
mysql-kongjian.webp

报警截图:

image-20220808191051773
image-20220808191051773

二.处理流程

1.解决方法一:

钞能力,增加RDS硬盘空间,剧终!但是会有大表查询效率问题,数据到达一定量还是需要会出现同样的问题。

2.解决方法二:

  1. 备份表A(mysqldump、xtrabackup等)
  2. 跟研发沟通,新建相同表结构B,将业务数据写入表B中,跑一段时间无问题。【实际业务中,将此表按月分表】
  3. 截断表A,释放硬盘空间(不会导致主从延迟)。
  4. 定时任务:定期备份删除过期数据。

涉及到的知识点:

mysql备份(鄙视一下某云,某云备份居然还要收费)。

截断表是否会导致主从延迟(不会)。

表空间分析

image-20220808191309186
image-20220808191309186

mysqldump 备份命令

代码语言:javascript
复制
mysqldump -u 用户名 -h 数据库地址 -p '密码' --opt 数据库名 表名 > /data/备份文件名.sql

备份表的时候报错:

代码语言:javascript
复制
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `XXXXX` at row: 686431

有报错,于是发工单,某云客服推荐使用DMS导出

image-20220808191804226
image-20220808191804226

备份的时候影响小部分性能,但是免费居然超过免费额度。本着能免费,为啥要收费呢, 真的是无语了,浪费几个小时!

代码语言:javascript
复制
导出失败: 您当前使用的数据库实例管控模式为“自由操作”,已超出免费额度1,000,000。如您需要继续操作请调整实例管控模式为“稳定变更”、“安全协同”后再进行
image-20220808191908156
image-20220808191908156

域名是修改数据库配置,再用mysqldump 将表导出。

代码语言:javascript
复制
net_read_timeout:30
net_write_timeout:60
​
于是把这个参数修改为:
​
net_read_timeout:288000
net_write_timeout:288000

修改数据库配置

image-20220808192112459
image-20220808192112459

再用mysqldump导出数据库,等了将近十几个小时之后终于备份成功,大小为193G

代码语言:javascript
复制
mysqldump -u 用户名 -h 数据库地址 -p '密码' --opt 数据库名 表名 > /data/备份文件名.sql

新上一张表

实际在跟研发沟通,按月来做分表。比如:表名+日期 table_2208

image-20220808192123971
image-20220808192123971

截断表之后的硬盘总大小

img
img

删除表和截断表命令之间的区别

表删除包括表的定义和关联对象(规则、索引、约、触发器、主键,等)。很明显,一旦表被删除,那么表中包含的所有的数据行都会被一同删除。   

truncate 命令则仅仅删除了表中所有的数据行。表的结构和所有的索引仍然继续存在,直到你输入删除表的命令(如上所述)。绑定到列上的规则、默认值、约束仍然继续绑定,并且触发器也仍然起作用。

截断表命令还会回收所有索引的分配页。   

截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。delete(删除) 一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的拥有者可以截断表。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.问题描述
    • 二.处理流程
      • 1.解决方法一:
      • 2.解决方法二:
      • 涉及到的知识点:
      • 表空间分析
    • mysqldump 备份命令
      • 新上一张表
      • 截断表之后的硬盘总大小
    • 删除表和截断表命令之间的区别
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档