Linux

mysqld 死了但 subsys 被鎖定

  • June 20, 2018

我在 shell 腳本中執行以下命令,並且在 RHEL-6 伺服器和 MySQL 版本 5.1.47 上執行此命令-

mysqld_safe --defaults-extra-file=/custom/path/of/my.cnf

my.cnf 的路徑可以是任何東西。(如果我沒記錯的話,作為開發人員我們無法確定mysql可以安裝在哪裡。)在腳本中的上述命令之後,還有一些mysql命令要執行。當腳本執行上述命令時,輸出控制台顯示mysql服務已成功啟動。但是當控製到要執行mysql命令的部分時,出現以下錯誤消息-

mysqld dead but subsys locked

知道我哪裡出錯了嗎?

這就是我所my.cnf包含的——

[mysqld]
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=1
innodb_file_io_threads=4
max_binlog_size=20M
max_allowed_packet=16M
max_connections=500
log_bin=logFile.log
binlog-do-db=test
server-id=1
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
binlog-format=ROW
log_warnings=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

對我來說,這意味著守護程序已經崩潰並重新啟動,但是 mysqld 用來防止多個守護程序訪問同一個數據庫的鎖定文件仍然存在……

我用

service mysqld stop
service mysqld start

不確定您是否可以重新啟動而不是停止然後啟動,而且我還沒有弄清楚崩潰的原因。

執行 mysqld_safe 命令後,確保使用 ‘ps -ef | 啟動 mysql 伺服器。grep mysql’ 命令。如果啟動 mysql 伺服器,您會在命令輸出中看到兩個程序(mysqld 和 mysqld_safe)。

  • 如果伺服器根本沒有啟動,請添加 log_error=/custom/path/to/log/file$$ mysqld $$在你的 my.cnf 部分並在此處粘貼錯誤日誌以調查 mysql 伺服器的問題

  • 如果伺服器正在啟動但只是關於子系統或權限的問題,或者,

    1. 停止mysql服務
    2. 刪除 subsys 文件(通常:/var/lock/subsys/mysql)
    3. 啟動mysql服務並嘗試如下登錄mysql伺服器:mysql -uroot -p your_root_pass

如果您不介意粘貼錯誤日誌,那麼確定服務問題的確切原因對任何人都有幫助。

引用自:https://dba.stackexchange.com/questions/41694