mysql的資料都存放在使用者指定好或預設位置的data資料夾下,預設的tmpdir也存放在data資料夾中,這裡存放著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.
##innobackbackpex:#innoback at /usr/bin/innobackupex line 389.以上是mysql預設tmpdir在哪的詳細內容。更多資訊請關注PHP中文網其他相關文章!