MySQL 磁盘满了,怎么办??

简介: 问题使用命令发现磁盘使用率为100%了,还剩几十兆。一系列神操作:备份数据库,删除实例、删除数据库表、重启mysql服务.结果磁盘空间均为释放怎么办网上查了很多资源,说要进行磁盘碎片化整理。原因是datafree占据的空间太多啦。具体可以通过这个sql查看。
SELECT CONCAT(TRUNCATE(SUM(data_length)/1024/1024,2),'MB') AS data_size,
CONCAT(TRUNCATE(SUM(max_data_length)/1024/1024,2),'MB') AS max_data_size,
CONCAT(TRUNCATE(SUM(data_free)/1024/1024,2),'MB') AS data_free,
CONCAT(TRUNCATE(SUM(index_length)/1024/1024,2),'MB') AS index_size
FROM information_schema.tables WHERE TABLE_NAME = 'datainfo';

这个是后来的图了,之前的图没有留,当时显示一张表里的data_free都达到了20个G。

image.png

网上推荐的做法如下所示,对表格进行碎片化整理。

image.png

image.png

image.png

2、新建一个数据库实例,设置数据库名和字符集

image.png

image.png

image.png

重新进行还原,数据库里的数据有了,并且验证没有问题。


问题解决

mysql碎片化产生的原因:


(1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大;


(2)当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;


(3)当MySQL对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分;


清除碎片的优点:


降低访问表时的IO,提高mysql性能,释放表空间降低磁盘空间使用率


注意:


1.MySQL官方建议不要经常(每小时或每天)进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可(我们现在是每月凌晨4点清理mysql所有实例下的表碎片)。


2.在OPTIMIZE TABLE运行过程中,MySQL会锁定表。因此,这个操作一定要在网站访问量较少的时间段进行。


3.清理student的105万条数据, OPTIMIZE TABLE 库.student;本地测试需要37秒。


自测:


大家可以用这条语句看看自己的系统的datafree大不大


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
缓存 固态存储 关系型数据库
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制
MySQL性能优化指南:深入分析重做日志刷新到磁盘的机制
762 0
|
缓存 关系型数据库 MySQL
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
370 0
|
关系型数据库 MySQL Linux
Linux忘记mysql密码怎么办?
Linux忘记mysql密码怎么办?
644 1
|
关系型数据库 MySQL 数据安全/隐私保护
MySql——忘记密码怎么办
MySql——忘记密码怎么办
263 0
MySql——忘记密码怎么办
|
10月前
|
关系型数据库 MySQL
图解MySQL【日志】——磁盘 I/O 次数过高时优化的办法
当 MySQL 磁盘 I/O 次数过高时,可通过调整参数优化。控制刷盘时机以降低频率:组提交参数 `binlog_group_commit_sync_delay` 和 `binlog_group_commit_sync_no_delay_count` 调整等待时间和事务数量;`sync_binlog=N` 设置 write 和 fsync 频率,`innodb_flush_log_at_trx_commit=2` 使提交时只写入 Redo Log 文件,由 OS 择机持久化,但两者在 OS 崩溃时有丢失数据风险。
266 3
|
10月前
|
存储 关系型数据库 MySQL
MySQL进阶突击系列(09)数据磁盘存储模型 | 一行数据怎么存?
文中详细介绍了MySQL数据库中一行数据在磁盘上的存储机制,包括表空间、段、区、页和行的具体结构,以及如何设计和优化行数据存储以提高性能。
|
缓存 关系型数据库 MySQL
MySQL——大量的deleted进程导致磁盘100%
MySQL——大量的deleted进程导致磁盘100%
111 0
|
算法 关系型数据库 MySQL
mysql忘记密码怎么办(附免密登录和修改密码)
mysql忘记密码怎么办(附免密登录和修改密码)
6652 0
mysql忘记密码怎么办(附免密登录和修改密码)
|
存储 SQL 关系型数据库
如果mysql磁盘满了,会发生什么?还真被我遇到了!
如果mysql磁盘满了,会发生什么?还真被我遇到了!
183 0
|
SQL 存储 关系型数据库
云数据仓库ADB上AnalyticDBMySQL版与MySQL的DML差异怎么办?
云数据仓库ADB上AnalyticDBMySQL版与MySQL的DML差异怎么办?
219 0

推荐镜像

更多