本站承诺永不接任何虚假欺骗、联盟广告、弹窗广告、病毒广告、诱导充值等影响用户体验的广告,广告屏蔽插件会影响本站部分功能,还请不要屏蔽本站广告,感谢支持!

当前位置:首页 / 正文

2019-11-20 | 编程技术 | 2545 次阅读 | 等你评论 | 0 次点赞 | 繁体

接到了一台 MySQL5.7 服务器磁盘空间不足的报警,该业务的数据量 20G 的样子,是什么造成磁盘空间不足呢?

经过排查后发现,数据目录下面有一个 ibtmp1 的文件特别大,有 949G 。

ibtmp1 是个什么东西呢?查看官方文档后发现这是非压缩的 innodb 临时表的独立表空间。通过 innodb_temp_data_file_path 参数指定文件的路径,文件名和大小,默认配置为 ibtmp1:12M:autoextend,也就是说在支持大文件的系统这个文件大小是可以无限增长的。

解决办法

1、修改 my.cnf 配置文件:

innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G

2、设置 innodb_fast_shutdown 参数

SET GLOBAL innodb_fast_shutdown = 0; 
# InnoDB does a slow shutdown, a full purge and a change buffer merge before shutting down

3、关闭 mysql 服务

4、删除 ibtmp1 文件

5、启动 mysql 服务

注意

为了避免以后再出现类似的情况,一定要限制临时表空间的最大值,如innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G

参数解释

在 mysql 关闭时,参数 innodb_fast_shutdown 影响着表的存储引擎为 innodb 的行为。参数为 0,1,2 三个值。

  1. 代表当 MYSQL 关闭时,Innodb 需要完成所有 full purge 和 merge insert buffer 操作,这需要花费时间来完成。如果做 Innodb plugin 升级,通常需要将这个参数调为 0,然后再关闭数据库
  2. 是参数的默认值,不需要完成 full purge 和 merge insert buffer 操作,但是在缓冲池的一些数据脏页还是会刷新到磁盘。
  3. 表示不需要完成 full purge 和 merge insert buffer 操作 ,也不将缓冲池中的数据脏页写回磁盘,。而是将日志都写入日志文件。这样不会有任何事物丢失,但是 mysql 在下次启动时,会执行恢复操作(recovery)

如果在上次关闭 innodb 的时候是在 innodb_fast_shutdown=2 或是 mysql crash 这种情况,那么它会利用 redo log 重做那些已经提交了的事务。
接下来的操作过程是:
(1). Rollback uncompleted transitions 取消那些没有提交的事务
(2). Purge all 清除无用的undo页
(3). Merge insert buffer 合并插入缓冲

via:
https://blog.csdn.net/weixin_34358365/article/details/89822725
https://blog.csdn.net/edyf123/article/details/81026139

标签: mysql数据库

猜你喜欢
如何定位Mysql中CPU占用高的查询语句
今天 mysql 服务器突然 CPU 告警,记录一下问题查找的过程第一步查看具体是哪个线程占用CPU最高1、在 Linux 中使用 top 命令找到 mysql 进程 PID2、指定进程 PID...
mysql8利用CTE特性实现递归查询
递归查询分为父子查询和子父查询。父子查询: 根据父 id 查询下面所有子节点数据;子父查询: 根据子 id 查询上面所有父节点数据;下边就利用 mysql8 新增语法实现递归查询,表结构及数...
mysql数据库删除重复的数据只保留一条
问题引入假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name。现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有...
Mysql 窗口函数学习
窗口函数是数据库查询中的一个经典场景,在解决某些特定问题时甚至是必须的。个人认为,在单纯的数据库查询语句层面【即不考虑 DML、SQL 调优、索引等进阶】,窗口函数可看作是考察求职者 SQL 功...
分享几个免费 IP 定位 api
在做定位的朋友,如果只是单纯的想获取地址而又不想集成高德等第三方 sdk,可以试试以下地址: ``` https://ip.seeip.org/geoip https://ip.seeip.or
像程序员一样安装程序:Chocolatey 初见
每次拿到一台新的电脑,快速安装上所有自己需要的程序是一件非常非常耗时间的事情。 如果去国内各大第三方下载站,或者电脑管家、百度的安装工具,它们很多都会把原生的安装包进行修改,加入自己的广告或其他
(首次提交评论需审核通过才会显示,请勿重复提交)