天天看點

記一次mysql資料庫恢複過程

因為一次突然斷電,導緻zoneminder無法正常啟動。檢視日志,原因是mysql啟動失敗。

版本:mariadb 10.1

  • 資料庫日志在 /var/log/mysql/, 主要看error.log
  • 資料庫檔案預設在 /var/lib/mysql/

檢視錯誤日志,發現錯誤主要是來源于innodb 的log檔案。

解決過程很曲折,網上的辦法都無法解決,直接說最後的解決辦法:

1.修改配置檔案: /etc/mysql/mariadb.conf.d/50-server.cnf

添加一行:

innodb_force_recovery = 6
           

2.重新啟動mysqld:

service mysql start
           

3.這時資料庫是隻讀的。無法讓應用程式正常工作。是以需要備份資料庫:

mysqldump -uroot -p -A >~/dump_all.sql
           

4.注釋掉第一步的修改。删除或移動資料庫檔案

vi /etc/mysql/mariadb.conf.d/50-server.cnf
#innodb_force_recovery = 6	//注釋掉這一行

service mysql restart

mv /var/lib/mysql /var/lib/mysql_backup
           

5.重新初始化整個資料庫

  • 網上都說用 mysqld --initialize 參數啟動資料庫,這時mysql 5.7版本的做法。新版已經去除這個參數了。是以行不通。
  • 解除安裝重裝mysql也算一個辦法,不過在我這裡提示zoneminder需要clean,無法解除安裝。

    我的辦法是執行(必須執行第四步,否則報錯)

mysql_install_db
mysql_secure_installation
           

按提示設定root密碼

6.重新啟動mysqld。

7.導入備份的資料庫檔案

mysql -u root -p
source ~/dump_all.sql
           

OK,大功告成!