ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL数据库无法启动,错误日志:InnoDB: Database page corruption on disk or a failed解决办法

2022-05-05 11:02:48  阅读:353  来源: 互联网

标签:11 12 22 16 failed InnoDB 2018 MySQL corruption


   

MySQL数据库无法启动,错误日志:InnoDB: Database page corruption on disk or a failed解决办法

系统环境:
CENTOS7, XAMPP

找到日志位置:
/opt/lampp/var/mysql/instance-7srte5br.err

错误日志如下:

2018-12-16 11:22:22 140123038402368 [Note] InnoDB: Using mutexes to ref count buffer pool pages
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: The InnoDB memory heap is disabled
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: GCC builtin __sync_synchronize() is used for memory barrier
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: Compressed tables use zlib 1.2.8
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: Using SSE crc32 instructions
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: Initializing buffer pool, size = 32.0M
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: Completed initialization of buffer pool
2018-12-16 11:22:22 140123038402368 [Note] InnoDB: Log sequence number at the start 365785282 and the end 365785262 do not match.
2018-12-16 11:22:22 140123038402368 [ERROR] InnoDB: Database page corruption on disk or a failed file read of tablespace /opt/lampp/var/mysql/ibdata1 page  [page id: space=0, page number=5]. You may have to recover from a backup.
2018-12-16 11:22:22 7f70efedc740 InnoDB: Page dump in ascii and hex (16384 bytes):
len 16384; hex a0a936d600000005000000000000000000000000

解决办法:
在MySQL配置/opt/lampp/etc/my.cnf里加入如下一行:

innodb_force_recovery=1

其他参数介绍:
Mode 1当遇到损坏页时,不使 MySQL 崩溃
Mode 2不运行后台操作
Mode 3不会尝试回滚事务
Mode 4不计算统计数据或应用存储/缓冲的变化
Mode 5在启动过程中不查看撤消日志
Mode 6在启动时不从重做日志(ib_logfiles)前滚

因为被破坏的地方只在索引的部分,所以当使用innodb_force_recovery = 1运行InnoDB时,操作如下:

#执行check,repair table 都无效
alter table yourtablue engine =myisam; #也报错了,因为模式是innodb_force_recovery =1。
ERROR 1025 (HY000): Error on rename of '...' to '....' (errno: -1)

#建立一张表:
create table yourtablue  #和原表结构一样,只是把INNODB改成了MYISAM。

#把数据导进去
insert into yourtablue_bak select * from email_status;

#删除掉原表:
drop table yourtablue;

#注释掉innodb_force_recovery 之后,重启。
#重命名:
rename table yourtablue_bak to yourtablue;

#最后该回存储引擎
alter table yourtablue engine = innodb

最后提醒:
为了让此类似问题不在出现,记得常常备份数据库

标签:11,12,22,16,failed,InnoDB,2018,MySQL,corruption
来源: https://www.cnblogs.com/luoguixin/p/16223931.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有