Loading

MySQL5.7 重新初始化解决mysql库表坏问题

一、问题报错
[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 更新下
四、参考链接

https://blog.csdn.net/qq813361162/article/details/52770712

posted @ 2021-04-20 22:43  后边跟上。  阅读(1526)  评论(0编辑  收藏  举报