[英]Windows / MySQL 5.5. / Crash on startup on exeption 0xc0000005
我有 Windows 2016 标准操作系统,安装了 MySQL 5.5.33.0。 今天早上发现mysql服务器没有运行,无法开机。 当我尝试打开它时,它立即崩溃,并且事件查看器中只有异常信息0xc0000005。 我什至无法运行 mysqlcheck,因为它在 mysqld 未运行时不起作用。
我将非常感谢任何建议。
我能够在 MySQL 设置中启用日志记录和设置路径。 日志中有很多带有此文本的条目(数字更改):
210107 10:28:21 InnoDB: Error: page 33382 log sequence number 114951961648
InnoDB: is in the future! Current system log sequence number 111386529682.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files.
See InnoDB: dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.
210107 10:32:33 InnoDB: Error: Insert buffer insert fails; page free 43, dtuple size 50
InnoDB: Cannot insert index record DATA TUPLE: 2 fields;
0: len 40; hex 436f6d70757465722050726573732020202020202020202020202020202020202020202020202020;
asc Computer Press ;;
1: len 4; hex 800070da; asc p ;;
InnoDB: The table where this index record belongs
InnoDB: is now probably corrupt. Please run CHECK TABLE on
InnoDB: that table.
InnoDB: space 0, page 109621, zip_size 0, bitmap bits 1
进度更新:我设法以 innodb_force_recovery = 3 启动 MySQL,它甚至运行了一段时间。 如果我运行 mysqlcheck.exe --all-databases --auto-repair,它会在某些此类表中报告损坏:
Warning: InnoDB: Index 'ix_linear_pole' contains 1683314 entries, should be 1683294.
但是,检查并没有运行到最后,对于一个特定的表,整个 mysql 服务器再次崩溃。
更新:我发现错误在 InnoDB 缓冲区中的加载命令中,但我不知道如何删除它。 每次我打开服务器时,缓冲区中的一个命令都会使其崩溃。
经过几个小时的研究,我发现 MySQL 无法加载 InnoDB Buffer。 最简单的方法是将命令添加到 my.ini
innodb_force_recovery = 4
但是,数据库仅针对 SHOW 数据启动。 使用mysqldump,我备份了没有索引的数据。 然后我从服务器上删除了数据库,我也从系统中删除了日志和数据库数据(C:\ProgramData\...\MySQL\data\ibdata 和 iblog0 和 iblog1)。 然后我停止了 MySQL 并删除了 innodb_force_recovery。 然后数据库运行但没有数据。 我使用正常恢复上传了原始数据并创建了索引。
从那一刻起,一切正常,没有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.