解決Centos系統中mysql無法啟動問題

來源:互聯網
上載者:User

今天一來公司,開發人員就對我說mysql無法啟動起來了,一問才知道他對測試伺服器上的服務都執行了重啟,當時心裡那個氣啊,想給他124,你說你要重啟服務也要問問我啊,現在整出問題來了,就知道來找我了.氣歸氣,問題還是要解決.先檢查了下伺服器的磁碟空間,發現沒有滿,再檢查了下mysql配置,也沒有問題,最後看了下mysql日誌,才終於找到問題,如圖

  原來是有個表有問題,找到開發問了下,這個表是他才備份的,還不能刪,伺服器上的資料是今天最新的,還沒有備份,真是日個狗了,好吧,那隻能根據日誌裡的提示先修改innodb_force_recovery了.
  ps:

  innodb_force_recovery影響整個InnoDB儲存引擎的恢複狀況.預設為0,表示當需要恢複時執行所有的恢複操作.當不能進行有效恢複操作時,mysql有可能無法啟動,並記錄下錯誤記錄檔.innodb_force_recovery可以設定為1-6,大的數字包含前面所有數位影響.當設定參數值大於0後,可以對錶進行select,create,drop操作,但insert,update或者delete這類操作是不允許的.

  1(SRV_FORCE_IGNORE_CORRUPT):忽略檢查到的corrupt頁.
  2(SRV_FORCE_NO_BACKGROUND):阻止主線程的運行,如主線程需要執行full purge操作,會導致crash.
  3(SRV_FORCE_NO_TRX_UNDO):不執行交易回復操作.
  4(SRV_FORCE_NO_IBUF_MERGE):不執行插入緩衝的合併作業.
  5(SRV_FORCE_NO_UNDO_LOG_SCAN):不查看重做日誌,InnoDB儲存引擎會將未提交的事務視為已提交.
  6(SRV_FORCE_NO_LOG_REDO):不執行前滾的操作.

操作如下:

在my.cnf中添加了以下兩個參數:
innodb_force_recovery=6
innodb_purge_thread=0

然後重啟mysql
service mysqld restart

重啟好了之後,立即對資料庫做邏輯匯出,然後將innodb_force_recovery設定為0,innodb_purge_thread=1,重建資料庫.這樣mysql的問題就解決了,最後把mysql的定時備份也改成早上備一次和晚上備一次了.

問題二,CentOS上不能啟動MySQL的問題解決辦法

1. /etc/my.cnf的預設配置

設定檔的內容如下:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

[mysql.server]

user=mysql

basedir=/var/lib

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

由於項目需要需要修改datadir的值,如下

datadir=/usr/local/project/etc/data

 

在CentOS中啟動MySQL:

[wzhwho@local~]#service mysqld start

Starting mysqld daemon  [FAILED]

 

2. 先看錯誤記錄檔

採用rpm安裝的MySQL記錄檔的預設路徑是/var/log/mysqld.log

mysqld started

InnoDB: Operating system error number 13 in a file operation.

InnoDB: The error means mysqld does not have the access rights to

InnoDB: the directory.

InnoDB: File name /usr/local/project/etc/data/ibdata1

InnoDB: File operation call: 'create'.

InnoDB: Cannot continue operation.

mysqld ended

 

從日誌可以知道,mysql的資料檔案目錄沒有許可權,所以我需要按照/var/lib/mysql目錄的許可權給/usr/local/project/etc/data目錄設定許可權和屬主。

[wzhwho@local~]#ll /var/lib

drwxr-x-r-x 1        mysql         mysql  4  Apr 11 2009    mysql

[wzhwho@local~]#ll /var/lib

[wzhwho@local~]chown -R mysql:mysql /usr/local/project/etc/data

[wzhwho@local~]chmod -R 755 /usr/local/project/etc/data

[wzhwho@local~]#ll  /usr/local/project/etc

drwxr-x-r-x 1        mysql         mysql  4  Apr 11 2009    data

接著我又啟動了MySQL,但是還是失敗,日誌資訊還是一樣。

 

3. 修改設定檔/etc/selinux/config

最後,我在外國友人的郵件來往中查到這樣的回複:

If you are using SE linux, set it to permissive mode by editing /etc/selinux/config

and changing

SELINUX=enforcing to SELINUX=permissive

This solved all of my problems with the

"Operating system error number 13 in a file operation" error

 

所以,最後確定為selinux的問題,輸入命令ls -Z,你會發現在檔案或檔案夾上面打的標籤。如果一個檔案是在selinux開啟的時候建立的,那麼即使你關閉selinux,它的許可權控制還是會起作用的。可以通過chcon來改變許可權。

 

4. MySQL成功啟動

[wzhwho@local~]#service mysqld start

Starting mysqld daemon  [OK]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.