活动买的阿里云服务器磁盘告警了,活动买的磁盘只有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无法释放空间,踩了个大坑,大家记得别踩坑...相关推荐

  1. mysql内存爆_线上MySQL机器内存爆掉原因分析与解决

    现象: 阿里金融某业务的MySQL机器的内存每隔几天就会增长,涨上去后,却不下来.累积后内存爆掉. 分析: 此业务是间隔的对MySQL有大访问,其它时间几乎无访问.排查发现,内存涨时,一般会有MySQ ...

  2. mysql爆内存_线上MySQL数据库机器内存爆掉原因分析与解决

    本文主要向大家介绍了线上MySQL数据库机器内存爆掉原因分析与解决,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 现象: 阿里金融某业务的MySQL机器的内存每隔几天就会增长,涨 ...

  3. doctor mysql数据导入_线上环境mysql主从同步的搭建过程

    之前搭建过一套主从同步的mysql集群,但是是基于新数据库,而这次线上环境要升级成主从同步的集群,记录一下升级过程和中间遇到的各种问题. 由于是直接对线上数据库进行修改,因此要保证对线上环境造成尽量小 ...

  4. 线上 mysql连接超时_线上环境数据库连接超时原因

    查看线上日志发现了如下的异常: ERROR 500.jsp - Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.Com ...

  5. mysql 同步失败_线上MYSQL同步报错故障处理方法总结

    前言 在发生故障切换后,经常遇到的问题就是同步报错,下面是最近收集的报错信息. 记录删除失败 在master上删除一条记录,而slave上找不到 Last_SQL_Error: Could not e ...

  6. 用友mysql数据库安装_如何重新安装和恢复Mysql数据库

    由于更换服务器,需要对Mysql重新安装,并恢复以前的数据,或者新项目冲突,提示要卸载MySQL以便它自身MySQL安装. -------------------------------------- ...

  7. MySQL线上优化_线上MySQL千万级大表,如何优化?

    前段时间应急群有客服反馈,会员管理功能无法按到店时间.到店次数.消费金额进行排序.经过排查发现是 SQL 执行效率低,并且索引效率低下. 图片来自 Pexels 应急问题 商户反馈会员管理功能无法按到 ...

  8. mysql线上教程_线上环境mysql主从同步的搭建过程

    之前搭建过一套主从同步的mysql集群,但是是基于新数据库,而这次线上环境要升级成主从同步的集群,记录一下升级过程和中间遇到的各种问题. 由于是直接对线上数据库进行修改,因此要保证对线上环境造成尽量小 ...

  9. idea本地跑如何看gc日志_线上故障如何快速排查?来看这套技巧大全

    简介:有哪些常见的线上故障?如何快速定位问题?本文详细总结工作中的经验,从服务器.Java应用.数据库.Redis.网络和业务六个层面分享线上故障排查的思路和技巧.较长,同学们可收藏后再看. 前言 线 ...

最新文章

  1. html5编写网页代码_freeCodeCamp.org的未来-从向世界传授语言到编写代码的5年经验...
  2. 【pwnable】asm之write up
  3. 【C 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )
  4. java创建请求拦截器_80.简单Retrofit+RxJava+日志拦截器结合使用
  5. 达摩院成立XG实验室 阿里官宣进军5G
  6. Tiny Wings 为什么能迅速成为 iOS App Store 付费应用第一名?
  7. 推荐系统相关科技论文写作建议
  8. java有string这个类型吗_关于java的String类型
  9. 50套简历模板.7z
  10. 通过opencv在图片上加上文字_基于Ubuntu16
  11. datax 高级_DATAx上海峰会-百格活动
  12. linux中一次显示一页内容的命令
  13. spring-boot 2.5.6 问题:WARN: This connection is using TLSv1.1
  14. Python 输出100-999的水仙花数
  15. python学习--模型过拟合查看learning curve
  16. linux查找文件或文件夹
  17. 利用Abel_Cain软件实现ARP欺骗
  18. c语言程序设计教学要求,C语言程序设计教学中的问题及改革建议①
  19. Android 如何获取唯一性ID实践
  20. 【高考那些事】准大学生看过来,选择方向和未来,自己把握

热门文章

  1. hdu 2222 Keywords Search AC自动机——多串匹配
  2. 用css3和jquery实现的渐变的动态进度条
  3. 动手学深度学习(PyTorch实现)(四)--梯度消失与梯度爆炸
  4. php session有什么用,session有什么作用?
  5. php设置表格边框颜色,HTML表格标记教程(38):表头的边框色属性BORDERCOLOR
  6. C语言手写二叉树(链式存储结构)
  7. 矩形键盘 linux,基于ARM的矩阵键盘设计及其linux驱动实现
  8. linux显示文本文件指定行数的数据
  9. Linux定时器接口
  10. Spring 注解解释