mysql 撤销删除_线上磁盘告警,mysql无法释放空间,踩了个大坑,大家记得别踩坑...
活动买的阿里云服务器磁盘告警了,活动买的磁盘只有40g,里面装的宝塔环境,除了网站程序还有mysql数据库。数据库整个大概20多G。
有几个表数据达到千万级别了,在不扩容的情况下,老王选择了删除部分不要的备份表和17,18年的数据,数据删完后,表空间未变,重启一下数据库,还是未变,只有找百度问问了。
由于是宝塔数据库5.5默认配置,innodb_file_per_table未指定,导致数据都存到了ibdata1文件中。
那么什么是ibdata1?
ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer。如果file-per-table选项打开的话,该文件则不一定包含所有表的数据。当innodb_file_per_table选项打开的话,新创建表的数据和索引则不会存在系统表空间中,而是存放在各自表的.ibd文件中.
显然这个文件会越来越大,innodb_autoextend_increment选项则指定了该文件每次自动增长的步进,默认是8M.
是什么原因导致ibdata1文件会越来越大?
ibdata1存放数据,索引和缓存等,是MYSQL的最主要的数据。所以随着数据库越来越大,表也会越大,这个无法避免的。如果时间长了,越来越大,我们在处理日志和空间的时候就不是那么方便了,就不知从何入手了。接下来我们就要处理下这样的情况,分库存储数据。
这下大概知道为什么哪怕数据删除,空间也不会释放的原因了。
该如何处理呢?
首先我们把数据库文件备份下来,然后直接删除ibdata文件(为了保险起见最好先全备一次,做到数据安全和完整),然后再重新导入数据库文件即可!
由于是生产库,不能随便弄,就算备份的话空间也不够了,只有等到扩容了,然后找个晚上通宵弄了。
下面是操作的步骤,操作步骤来源于网络。
具体操作步骤如下(截图并不完整,但是首先要弄懂大概情况和原理):
1、停止业务,备份一次全库
mysqldump -uroot -ppassword --all-databases --add-dorp-table > /root/all_mysql.sql
2、备份完成,停止数据库
systemctl stop mariadb 或者 service mysqld stop
3、修改配置文件
在[mysqld]下增加下面配置 innodb_file_per_table=1 验证配置是否生效,可以重启mysql后,执行 #service mysqld restart
4、验证
mysql -uroot -ppassword mysql
show variables like '%per_table%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| innodb_file_per_table | ON |
+-----------------------+-------+
1 row in set (0.00 sec)
innodb_file_per_table的状态变为ON
5、删除ibdata1文件和日志
rm -rf ibdata1
rm -rf ib_logfile*
6、还原数据库
mysql -uuser -ppassword
source /root/all_mysql.sql
数据文件单独存放(共享表空间改为每个表独立的表空间文件)。
大家如果有什么好的建议可以留言告诉老王,感激不尽。
mysql 撤销删除_线上磁盘告警,mysql无法释放空间,踩了个大坑,大家记得别踩坑...相关推荐
- mysql内存爆_线上MySQL机器内存爆掉原因分析与解决
现象: 阿里金融某业务的MySQL机器的内存每隔几天就会增长,涨上去后,却不下来.累积后内存爆掉. 分析: 此业务是间隔的对MySQL有大访问,其它时间几乎无访问.排查发现,内存涨时,一般会有MySQ ...
- mysql爆内存_线上MySQL数据库机器内存爆掉原因分析与解决
本文主要向大家介绍了线上MySQL数据库机器内存爆掉原因分析与解决,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 现象: 阿里金融某业务的MySQL机器的内存每隔几天就会增长,涨 ...
- doctor mysql数据导入_线上环境mysql主从同步的搭建过程
之前搭建过一套主从同步的mysql集群,但是是基于新数据库,而这次线上环境要升级成主从同步的集群,记录一下升级过程和中间遇到的各种问题. 由于是直接对线上数据库进行修改,因此要保证对线上环境造成尽量小 ...
- 线上 mysql连接超时_线上环境数据库连接超时原因
查看线上日志发现了如下的异常: ERROR 500.jsp - Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.Com ...
- mysql 同步失败_线上MYSQL同步报错故障处理方法总结
前言 在发生故障切换后,经常遇到的问题就是同步报错,下面是最近收集的报错信息. 记录删除失败 在master上删除一条记录,而slave上找不到 Last_SQL_Error: Could not e ...
- 用友mysql数据库安装_如何重新安装和恢复Mysql数据库
由于更换服务器,需要对Mysql重新安装,并恢复以前的数据,或者新项目冲突,提示要卸载MySQL以便它自身MySQL安装. -------------------------------------- ...
- MySQL线上优化_线上MySQL千万级大表,如何优化?
前段时间应急群有客服反馈,会员管理功能无法按到店时间.到店次数.消费金额进行排序.经过排查发现是 SQL 执行效率低,并且索引效率低下. 图片来自 Pexels 应急问题 商户反馈会员管理功能无法按到 ...
- mysql线上教程_线上环境mysql主从同步的搭建过程
之前搭建过一套主从同步的mysql集群,但是是基于新数据库,而这次线上环境要升级成主从同步的集群,记录一下升级过程和中间遇到的各种问题. 由于是直接对线上数据库进行修改,因此要保证对线上环境造成尽量小 ...
- idea本地跑如何看gc日志_线上故障如何快速排查?来看这套技巧大全
简介:有哪些常见的线上故障?如何快速定位问题?本文详细总结工作中的经验,从服务器.Java应用.数据库.Redis.网络和业务六个层面分享线上故障排查的思路和技巧.较长,同学们可收藏后再看. 前言 线 ...
最新文章
- html5编写网页代码_freeCodeCamp.org的未来-从向世界传授语言到编写代码的5年经验...
- 【pwnable】asm之write up
- 【C 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )
- java创建请求拦截器_80.简单Retrofit+RxJava+日志拦截器结合使用
- 达摩院成立XG实验室 阿里官宣进军5G
- Tiny Wings 为什么能迅速成为 iOS App Store 付费应用第一名?
- 推荐系统相关科技论文写作建议
- java有string这个类型吗_关于java的String类型
- 50套简历模板.7z
- 通过opencv在图片上加上文字_基于Ubuntu16
- datax 高级_DATAx上海峰会-百格活动
- linux中一次显示一页内容的命令
- spring-boot 2.5.6 问题:WARN: This connection is using TLSv1.1
- Python 输出100-999的水仙花数
- python学习--模型过拟合查看learning curve
- linux查找文件或文件夹
- 利用Abel_Cain软件实现ARP欺骗
- c语言程序设计教学要求,C语言程序设计教学中的问题及改革建议①
- Android 如何获取唯一性ID实践
- 【高考那些事】准大学生看过来,选择方向和未来,自己把握
热门文章
- hdu 2222 Keywords Search AC自动机——多串匹配
- 用css3和jquery实现的渐变的动态进度条
- 动手学深度学习(PyTorch实现)(四)--梯度消失与梯度爆炸
- php session有什么用,session有什么作用?
- php设置表格边框颜色,HTML表格标记教程(38):表头的边框色属性BORDERCOLOR
- C语言手写二叉树(链式存储结构)
- 矩形键盘 linux,基于ARM的矩阵键盘设计及其linux驱动实现
- linux显示文本文件指定行数的数据
- Linux定时器接口
- Spring 注解解释