MySQL 臨時目錄

 

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

相關文章
相關標籤/搜索