因為一次突然斷電,導緻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,大功告成!