MySQL数据目录/data/mysql所在的上层目录/data磁盘空间不足致使MySQL启动失败,因此清理了/data目录下除了mysql子目录外的其余无用目录。重启发现仍是失败。检查错误日志。看到以下错误:
/usr/local/mysql/bin/mysqld: Can't create/write to file '/data/tmp/ibbLmEoD' (Errcode: 13 - Permission denied)
原来是清理无用目录时不当心把MySQL配置文件中指定的tmpdir——/data/tmp目录也给删除了,致使MySQL Server启动时的一些临时文件或表没法写入,从而启动失败。重建目录并赋予正确的权限后,重启MySQL Server,正常启动。
顺便说一说MySQL 临时目录这个参数:
命令行参数格式:--tmpdir=path
配置文件参格式:tmpdir=path
临时目录用于存储临时文件或临时表。值能够是一个使用“:”(Unix)或“;”(Windows)分隔的路径列表,这些路径可被轮流使用,以便将负载分到不一样磁盘。若MySQL server是做为Slave的角色,则不能将该目录指向基于内存文件系统的目录或者当主机重启时会被清理掉的目录,由于Slave须要这些文件复制临时表或执行LOAD DATA INFILE操做,这些文件丢失会致使复制失败。这意味着不能讲slave的tmpdir设置为linux系统默认的/tmp目录。对于Slave可使用另外一配置项slave_load_tmpdir来设置其临时目录,这样Slave能够不使用通用选项tmpdir设置的临时目录。对于非Slave角色的MySQL server没此限制。
若临时目录不存在或权限不正确不只会引发MySQL Server启动失败还会致使其余可能使用到临时目录的MySQL实用程序运行异常。不少MySQL相关程序会从MySQL Server的配置文件读取选项值,好比全备程序xtrabackup,下面这个错误就是由于MySQL Server配置文件中指定的临时目录不存在形成的。
xtrabackup_56: Can't create/write to file '/data/tmp/ibHbumcM' (Errcode: 2 - No such file or directory)
2014-07-23 16:04:42 7f1b25c607e0 InnoDB: Error: unable to create temporary file; errno: 2
xtrabackup: innodb_init(): Error occured.
innobackupex: Error:
innobackupex: ibbackup failed at /usr/bin/innobackupex line 389.mysql