一、問題報錯
[ERROR] InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT between the checkpoint xxxx and the end yyyy.
因MySQL上存儲的應用數據並沒有多大,mysql下多張表都存在問題,加上有數據備份,選擇了直接重新初始化mysql庫解決問題。
二、問題處理
1、機器下線,應用服務停止,確認備份的數據庫大小合理並可用
2、my.cnf配置文件[mysqld]下添加innodb_force_recovery=6 重啟數據庫,可以啟動並登錄進去
3、執行自動檢查應用庫並修復表
mysqlcheck -u username -p -B databsename --auto-repair
4、再次做個應用庫備份導出
mysqldump -u username -p databasename > databasename_$(date +%F).sql
5、將現有的數據庫datadir目錄重命名備份
mv /mysql/data{,-bak}
6、初始化MySQL
../mysql/bin/mysqld --initialize --user=mysql
7、查找新密碼,並修改
cat ../logs/mysql/error.log | grep password
mysql> alter user 'root'@'localhost' identified by '新密碼';
mysql> flush privileges;
8、創建應用庫,添加應用鏈接數據庫的用戶並授權
mysql> create database databasename;
mysql> create user 'username'@'localhost' identified by '之前該應用用戶的密碼';
mysql> grant all on databasename.* to 'username'@'localhost';
mysql> flush privileges;
9、還原應用的數據庫
../bin/mysql -uusername -p databasename < 備份.sql
10、重啟應用服務,數據庫服務,業務驗證
三、其他處理方式,僅供參考
刪除 MySQL數據存儲目錄下的 ib_logfile0和ib_logfile1 重新啟動
mysql_upgrade -u xxx -p 更新下
