mysql sum 删除_如果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。
![ ](https://upload-images.jianshu.io/upload_images/14371339-9c2f5b1ab4f3d362.png!large?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
网上推荐的做法如下所示,对表格进行碎片化整理。
ALTER TABLE datainfo ENGINE=InnoDB;
ANALYZE TABLE datainfo;optimize table datainfo;
僵局:
查看数据库版本为 5.562 不支持 inodb,要么选择升级数据库。正在这时,有个不好的消息发生了,那张表格给删掉了,但是磁盘空间还是没有释放啊。所以对表进行碎片化整理的路也走不通了,因为表没了。。。
后来的神操作
1、使用命令查看 mysql 安装的位置和配置文件所在的地方
mysql 1118 945 0 14:28 ? 00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
2、关闭 mysql
service mysql stop
3、删除 datadir 目录下的 ibdata1、ib_logfile0 ib_logfile1 这些文件
4、 移动 mysql 的启动参数
mv /etc/my.cnf ./abc
5、重新启动 mysql 发现磁盘空间释放了
service mysql start
磁盘空间终于释放了
下一步数据库还原
1、采用 navicate 备份工具,进行数据库备份
备份成功后生成了,生成 psc 文件。
200409141055.psc
2、新建一个数据库实例,设置数据库名和字符集
3、然后对备份数据库进行还原,点击还原
4、开始进行还原
第一次还原后发现还原后数据库表建成功了,但是表里面没有数据。
后来网上查找资料发现是,遇到错误就停止了。所以更改了还原的配置,再次进行还原。
之前是这样设置的
还原时当成一个事务进行了,遇到错误就停止了。
更改配置
重新进行还原,数据库里的数据有了,并且验证没有问题。
问题解决
mysql 碎片化产生的原因
(1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大;
(2)当执行插入操作时,MySQL 会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占用,就形成了碎片;
(3)当 MySQL 对数据进行扫描时,它扫描的对象实际是列表的容量需求上限,也就是数据被写入的区域中处于峰值位置的部分;
清除碎片的优点:
降低访问表时的 IO,提高 mysql 性能,释放表空间降低磁盘空间使用率
注意
1.MySQL 官方建议不要经常 (每小时或每天) 进行碎片整理,一般根据实际情况,只需要每周或者每月整理一次即可 (我们现在是每月凌晨 4 点清理 mysql 所有实例下的表碎片)。
2.在 OPTIMIZE TABLE 运行过程中,MySQL 会锁定表。因此,这个操作一定要在网站访问量较少的时间段进行。
3.清理 student 的 105 万条数据, OPTIMIZE TABLE 库.student;本地测试需要 37 秒。
自测
大家可以用这条语句看看自己的系统的 datafree 大不大
show table status from 表名;
作者:会飞的猪
原文链接:https://testerhome.com/topics/23049
来源:testerhome
mysql sum 删除_如果mysql磁盘满了,会发生什么?还真被我遇到了~相关推荐
- mysql 撤销删除_线上磁盘告警,mysql无法释放空间,踩了个大坑,大家记得别踩坑...
活动买的阿里云服务器磁盘告警了,活动买的磁盘只有40g,里面装的宝塔环境,除了网站程序还有mysql数据库.数据库整个大概20多G. 有几个表数据达到千万级别了,在不扩容的情况下,老王选择了删除部分不 ...
- mysql sum 慢_故障分析 | MySQL 优化案例 - select count(*)
作者:xuty 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 本文关键字:count.SQL.二级索引 一.故事背景 项目组联系我说是有一张 50 ...
- MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...
- mysql导致根目录爆满_因为根目录磁盘满了,我移动数据和软件造成mysql启动不了,查原因mysql.sock不在了...
今天刚接手新项目的服务器,不知道以前谁搭建的因为要备份数据库,但是发现空间不足/根目录满的,然后我移动软件和文件造成mysql启动不了root@localhost~]#/data 今天刚接手新项目的服 ...
- mysql多大_洞悉MySQL底层架构:游走在缓冲与磁盘之间
提起MySQL,其实网上已经有一大把教程了,为什么我还要写这篇文章呢,大概是因为网上很多网站都是比较零散,而且描述不够直观,不能系统对MySQL相关知识有一个系统的学习,导致不能形成知识体系.为此我撰 ...
- mysql禁止数据被删除_为什么MySQL不建议delete删除数据
我负责的有几个系统随着业务量的增长,存储在MySQL中的数据日益剧增,我当时就想现在的业务方不讲武德,搞偷袭,趁我没反应过来把很多表,很快,很快啊都打到了亿级别,我大意了,没有闪,这就导致跟其Join ...
- MySQL delete删除数据后,释放磁盘空间
当 MySQL 数据库服务删除部分数据后:有些情况下这些数据占用的存储空间会释放掉,有些情况这些存储空间则不会释放.以下是对这种情况的简单说明: 一.删除表|清空数据表 当执行删除数据表或者清空数据表 ...
- 删除+mysql+用户密码_误删除mysql中的所用用户,如何重新设置root账号和密码
在练习mysql语句的时候,使用delete将数据库中的所有用户删除了,其中也包括root用户.并进行了flush privileges:这时候发现重新登入mysql已经不能正常登陆.对此我们要重新设 ...
- 删除 mysql ibd文件_误删除MySQL数据库表的ibd文件怎么办
很多年前,学习oracle10g的技术时,看过盖国强老师写的一篇文章,在linux系统中,oracle数据库存活的时候,用系统命令rm删除一个数据文件,这个时候找到删除文件的fd文件句柄,就可以将删除 ...
- mysql语句命令_常用MySQL语句(命令行)
# 命令行客户端MySQLMySQL是一个关系型数据库管理系统 安装MySQL服务端软件使用: sudo apt-get install mysql-server 安装MySQL客户端软件使用: su ...
最新文章
- 第一次 C语言课程设计
- 解决Mybatis启动报错: Invalid bound statement (not found)
- 添加nginx为系统服务(service nginx start/stop/restart)
- 微信分享接口示例(设置标题、缩略图、连接、描述),附demo下载
- SAP中国招聘内部顾问,工作职责是做客户项目,ABAP开发
- Win11手机应用大改!全新界面来袭
- Oracle高可用概述(HA与RAC的关系解惑)
- Oracle提示“ORA-04098:触发器‘XXX_TRIGGER’无效且未通过重新验证”
- C/C++中的static和extern关键字
- nmake下一些错误的解决办法
- dllMain函数的作用
- canva怎么组合_教你使用Canvas合成图片
- 僵尸进程和孤儿进程-(转自Anker's Blog)
- C/C++ 学习日记3:制作带有界面的植物大战僵尸助手(基于MFC)
- 腾讯2019技术岗笔试 小Q非常喜欢复读,有时候,小Q会得到某个字符串S。这时他会把s不断重复不断重复连成一个无限长的串。比如说,小Q现在得到一个串abc,他会直一复读, 那么形成的字符串就是:
- js ,DOM节点,制作点名器
- 短时傅里叶变换(STFT)实例
- STC89C51——定时器/计数器介绍及程序配置
- 微型计算机的集成在微,微型计算机的( )集成在微处理器芯片上。
- 用matlab来画表格(实例:处理光电效应及普朗克常数的实验报告)
热门文章
- Win7如何自定义鼠标右键菜单 添加新建文本文档
- 000 初步使用Kotlin开发Android应用
- ESRI.ArcGIS.Controls.AxMapControl
- Android 设计模式:(一)策略模式 —— 封装行为的大局观
- r(AB)=r(B)则方程组ABX=0与Bx=0有完全相同的解
- 服务器如何修改内存大小,如何限制docker容器的内存大小
- freetype字体位图转距离场_关于freetype的移植和其官方demos的使用总结
- 获取extjs 选择后的表头_OD数据获取脚本分享
- 拓端tecdat|R语言极值推断:广义帕累托分布GPD使用极大似然估计、轮廓似然估计、Delta法
- 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络