2019年10月27日 星期日

修復MySQL無法啟動的問題

在備用的server上發現MySQL無法啟動

從mysql error log (/var/log/mysql/mysql/error.log)
看起來有可能是資料毀損

補救方式:
1. 先使用recovery mode啟動:
    /etc/mysql/my.cnf裡面加入innodb_force_recovery = 1
2. 啟動MySQL:
    $ service mysql start
    如果還是啟動失敗就修改my.cnf的值, ex:
    innodb_force_recovery = 2, 再啟動看看
    依照毀損的嚴重程度最多加到6
3. Dump database的SQL
    mysqldump -u 'name' -p -A > dump.sql
4. 關閉MySQL:
    $ service mysql stop
5. 把舊的資料庫內容刪除(最好先備份)
    $ cd /var/lib/mysql
    $ rm ib*
    $ rm -rf [DATABASE_NAME]
6. 在my.cnf裡面將innodb_force_recovery = 1移除
    啟動MySQL
7. 將dump的資料庫寫回去:
    $ mysql -u 'name' -p < dump.sql
8. 寫入途中, 修正所有發生的error
9. service mysql restart
10. 啟動成功

不過要注意的時,修正途中可能造成資料遺失
必須看看怎麼補救

Ref:
https://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

沒有留言:

張貼留言