案例分享-MySQL服务器/tmp目录被占满

描述:

MySQL服务器在每天的22点/tmp目录磁盘空间被占满,持续10分钟左右,然后自动恢复./tmp目录大小10G,平时可用空间8G左右.MySQL版本 5.5

分析

1.       在问题出现时,进入/tmp目录,ls –al查看具体文件.

2.       在问题出现时,登录MySQL,执行show processlist查看是否存在异常SQL.

3.       查看MySQL慢查询日志.

4.       MySQL配置情况:

a)         default_storage_engine         = InnoDB

b)         transaction_isolation           = READ-COMMITTED

c)         binlog_format                 = mixed

d)         binlog_cache_size              = 32K

e)         max_binlog_cache_size         = 18446744073709547520

f)          tmpdir                       = /tmp

总结

1.       InnoDB存储引擎,在READ-COMMITTED事务隔离级别的情况下(默认的级别是REPEATABLE-READ),普通的DELETE操作,在记录binlog的时候,会采用ROW模式.(暂时还不清楚原因,以后分析).

2.       程序在每天的22点,有一个清理的定时任务.自动删除R表的数据,如下:

delete from R where time < xxx;

将某天之前的数据清除.但是该表比较大,近50G.

3.       MySQL参数

binlog_cache_size

max_binlog_cache_size

参考http://dev.mysql.com/doc/refman/5.5/en/replication-options-binary-log.html

4.       每次执行定时任务的时候,因为binlog记录的是ROW模式,再加上表的数据量比较大,binlog缓存一定会超过32K,结果就会在/tmp目录下生成临时文件(参考: When a thread that handles the transaction starts, it allocates a buffer of binlog_cache_size to buffer statements. If a statement is bigger than this, the thread opens a temporary file to store the transaction. The temporary file is deleted when the thread ends),MySQL默认配置,在64位系统情况下,binlog文件大小最大可以达到16EB.但是系统的/tmp目录是10G,所以事务执行一半,磁盘空间被占满,事务回滚.

5.       事后查看R表的数据以及binlog记录,验证了第4步的推论.

解决

在没有新数据写入的前提下,把确定保留的数据先放到新表里面,然后删除旧表,再把新表重命名.

create table R_20130220 select * FROM R where  time >= xxx;

DROP TABLE R;

RENAME TABLE R_20130220 TO R;

隔天观察nagios和cacti监控,故障恢复.

原文:http://2853725.blog.51cto.com/2843725/1394423

linux下mysql tmp满_MySQL服务器/tmp目录被占满相关推荐

  1. mysql5.5.8编译安装_Mysql应用linux下mysql 5.5.8 源码编译安装

    <MysqL应用linux下MysqL 5.5.8 源码编译安装>要点: 本文介绍了MysqL应用linux下MysqL 5.5.8 源码编译安装,希望对您有用.如果有疑问,可以联系我们. ...

  2. Linux下mysql数据库从服务器A只迁移DATA文件夹到服务器B

    Linux下mysql数据库从服务器A只迁移DATA文件夹到服务器B 操作流程 获取数据 迁移数据 运行新的数据库 后记 操作流程 前言:近期做了一个项目,由于mysql数据库中的数据比较庞大,考虑转 ...

  3. mysql 多数据库文件_今天突然发现我的Linux下MySQL数据库目录多了好多文件

    今天再次重现Blog了,虽然很忙,还是要来写一下Blog的,嘻,首先还是一样先谢谢Sery 今天发现了我的Linux下Mysql数据库目录多了好多Mysql-bin.0000X这些文件,经过自己查找资 ...

  4. linux mysql解锁账号密码忘了怎么办,linux下mysql忘记密码怎么办

    前言 今天在服务器安装mysql之后,登录发现密码错误,但是我没有设置密码呀,最后百度之后得知,mysql在5.7版本之后会自动创建一个初始密码. 报错如下: [root@mytestlnx02 ~] ...

  5. Linux下MySQL数据库主从同步配置

    操作系统:CentOS 6.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说 ...

  6. linux下mysql日志管理及mysql备份还原

    linux下mysql日志管理及mysql备份还原 1.SHOW GLOBAL VARIABLES LIKE '%log%';  显示所有日志相关的选项 2.错误日志:log_error和log_wa ...

  7. linux上mysql忘记密码,linux下mysql忘记密码解决方案

    一.写随笔的原因:之前自己服务器上的mysql很久不用了,忘记了密码,所以写一下解决方案,以供以后参考 二.具体的内容: 1. 检查mysql服务是否启动,如果启动,关闭mysql服务 运行命令:ps ...

  8. Linux下MySQL的几种安装方式

    闲来有空,整理下Linux下Mysql的几种安装方式,分别使用yum/rpm.常规方式编译安装.cmake方式编译安装以及使用二进制方式免编译安装MySQL Linux系统环境: CentOS rel ...

  9. Linux下mysql支持中文,linux下mysql环境支持中文配置步骤

    sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...

最新文章

  1. mysql 查看用户权限_在Navicat Premium中管理MySQL用户 - 第4部分:权限管理器工具
  2. mysql存储过程语法 if_mysql存储过程语法 if
  3. Qt creator5.7 OpenCV249之图片旋转(含源码下载)
  4. 禁止html文件控件手动输入的方法
  5. (12)vue.js 修饰符
  6. springmvc ajaxjson处理
  7. itextpdf添加表格元素_基操勿6第四期:PPT表格美化
  8. 植物大战僵尸全明星服务器维修多长时间,植物大战僵尸全明星常见问题FAQ详解...
  9. [洛谷P3181][HAOI2016]找相同字符
  10. 【CVRP】基于matlab蚁群算法求解带容量的车辆路径规划问题【含Matlab源码 1039期】
  11. 《土豆荣耀》重构笔记(七)控制角色移动并添加音效
  12. ext2、ext3与ext4的区别
  13. MATLAB热障涂层成像,微波检测热障涂层孔隙率的可行性研究
  14. Android-Binder机制
  15. Co-occurrence网络图绘制教程(附详细代码)
  16. ym——android源代码大放送(实战开发必备)
  17. kodi 缓存文件夹_如何将Kodi图稿与视频存储在同一文件夹中
  18. 如何将英文pdf文档在线翻译成中文?
  19. 产品定位--如何进行互联网产品定位/制定产品目标?
  20. Linux基础入门--驱动开发--USB

热门文章

  1. 在CentOS7.2上部署基于PostgreSQL10的citus分布式数据库
  2. 在脚本中调用psql如何自动输入密码
  3. Qt读写注册表和ini文件
  4. 【CF526F】Pudding Monsters
  5. AMDP + XLSX Workbench 报表开发模式
  6. 【POJ 3273】 Monthly Expense (二分)
  7. 学习事务,视图和索引
  8. NSTimer循环引用的问题
  9. 基于Mono跨平台移动应用开发框架发布Xamarin 3.0
  10. Oracle 添加主键和索引