2014-10-27 25 views
0

我可以啓動mysqld並正常使用它。但開始時間很長(超過3分鐘)。當我檢查日誌文件(/var/log/mysqld.log)時,我發現InnoDB: Unable to lock ./ibdata1, error: 38在Lustre文件系統上啓動Mysqld的時間太長(InnoDB:無法鎖定./ibdata1,錯誤:38)

最近,我將我的mysql數據從/var/lib/mysql移到/home/user/mysql,因爲文件太大。然後我分別改變了datadir,/etc/my.cnf/etc/init.d/mysqld,並在etc/my.cnf改變了datasock/home/user/mysql的所有者和mod以及其中的文件也被正確設置。

此安裝中的/home卷位於Lustre文件系統上。

當我發現在我的數據庫中有3個innodb引擎表時,我將它們放下。但問題仍然存在。

以下是啓動mysqld(/var/log/mysqld.log)時的日誌。

141027 19:40:03 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 
141027 19:40:04 mysqld_safe Starting mysqld daemon with databases from /home/user/mysql 
InnoDB: Unable to lock ./ibdata1, error: 38 
141027 19:40:04 InnoDB: Retrying to lock the first data file 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
InnoDB: Unable to lock ./ibdata1, error: 38 
141027 19:41:45 InnoDB: Unable to open the first data file 
InnoDB: Error in opening ./ibdata1 
141027 19:41:45 InnoDB: Operating system error number 38 in a file operation. 
InnoDB: Error number 38 means 'Function not implemented'. 
InnoDB: Some operating system error numbers are described at 
InnoDB: http://dev.mysql.com/doc/refman/5.1/en/operating-system-error-codes.html 
InnoDB: Could not open or create data files. 
InnoDB: If you tried to add new data files, and it failed here, 
InnoDB: you should now edit innodb_data_file_path in my.cnf back 
InnoDB: to what it was, and remove the new ibdata files InnoDB created 
InnoDB: in this failed attempt. InnoDB only wrote those files full of 
InnoDB: zeros, but did not yet use them in any way. But be careful: do not InnoDB: remove old data files which contain your precious data! 
141027 19:41:45 [ERROR] Plugin 'InnoDB' init function returned error. 
141027 19:41:45 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 
141027 19:41:45 [Note] Event Scheduler: Loaded 0 events 
141027 19:41:45 [Note] /usr/libexec/mysqld: ready for connections. 
Version: '5.1.52' socket: '/home/user/mysql/mysql.sock' port: 3306 Source distribution 
+0

錯誤日誌消息包含一些用於疑難解答和糾正問題的說明。你遵循了這些說明嗎?如果是這樣,發生了什麼? – 2014-10-27 12:23:25

+0

你的'/ home /'文件系統是否在某種不同類型的捲上(例如nfs而不是extfs4)? *可能會導致錯誤38 - 功能未執行。 – 2014-10-27 12:24:49

+0

@OllieJones我做了這些指示,但錯誤仍在這裏。/home在共享存儲上,/ var/lib/mysql是本地的。我將mysql目錄從本地移動到共享存儲。這是主要原因嗎? – BooksE 2014-10-28 00:57:38

回答

1

您正在爲/home卷使用Lustre文件系統。除非您專門在Lustre捲上啓用它,否則該文件系統不支持文件鎖定。但是InnoDB需要鎖定它的文件才能正常工作。因此,當InnoDB發出ioctl(2)調用來鎖定文件時,文件系統會啓動「功能未實現」。這就是你的錯誤日誌所說的。

InnoDB: Error in opening ./ibdata1 
141027 19:41:45 InnoDB: Operating system error number 38 in a file operation. 
InnoDB: Error number 38 means 'Function not implemented'. 

這裏是鏈接到舊的listserv關於這一點。 http://lists.lustre.org/pipermail/lustre-discuss/2007-August/003768.html有人在那個線程中提到如何啓用文件鎖定。

您可能希望與管理文件系統的人一起爲您的MySQL數據庫(啓用了鎖定的卷)創建專用Lustre卷。

這是一個關鍵任務MySQL服務器嗎?如果是這樣,請在將此文件系統部署之前進行大量的盡職調查。

+0

謝謝你的回答。推管理員爲MySQL數據庫創建特殊的Lustre卷是不容易的。事實上,我不需要InnoDB引擎,我也沒有任何引擎是InnoDB的表。有沒有辦法禁用InnoDB引擎並跳過ibdata1的鎖定? – BooksE 2014-10-29 01:04:04

+0

讀取了您提供的網址後。我知道如何禁用InnoDB引擎。在/etc/my.cnf中添加skip-innodb。再次感謝。我是新來的。當我獲得足夠的聲譽時,我會投票並接受你的答案。 – BooksE 2014-10-29 01:14:12

相關問題