Linux的文件都是以FD描述的,而MySQL要访问表,都会打开相应的数据和索引文件的;有时创建临时文件,
如(1)当操作binlog event事件长度大于binlog_cache_size,就会在tmpdir目录(默认/tmp)下创建临时文件,而这些文件,用ls -al /tmp是无法看到的,只有通过查看MySQL进程打开的文件才可见。(2)如对大表,进行表结构变更,一般都会在数据库所在的目录下创建临时文件的。
查看MySQL进程打开的文件命令:
lsof -p pid
呵呵,说这么多,就一行命令,晕。。。
示例:
今天对一张大表变更添加字段,用show engine innodb status查看,行到以下信息,创建了临时文件,接着那这个文件大哪儿,用来作啥的呢?
LOCK table `xxxxxx`.#sql-165_351360'
lsof -p 357 | grep sql-165_351360
mysqld 357 mysql 147uW REG 8,16 255852544 3221225779 /work/mysql/xxxx/#sql-165_351360.ibd
结果就是在数据库xxxx目录下的。
相反查看某个文件,正在被哪些进程使用呢? 用命令:fuser
参见: http://www.cnblogs.com/yuboyue/archive/2011/07/18/2109838.html
阅读(169) | 评论(0) | 转发(0) |