在備用的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
沒有留言:
張貼留言