MySQL数据库损坏(MySQL Databases Corrupted)

2019-10-19 08:28发布

我们运行一个Windows Server 2008 R2的KVM VPS,如需要的地方我们的系统自动建立新数据库,为客户在MySQL数据库5.5服务器。 一个完全独立的驱动器/分区昨天跑出空位(曾与MySQL数据库相关联的文件),但似乎已损坏的MySQL数据库。

在审查日志文件,我可以看到的是InnoDB被破坏,但不能做的是什么问题或如何解决它的正面或反面。 任何人都可以帮助解释什么是这些错误的意思,所以我也许能修好吗?

Thread pointer: 0x0
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
00000001401198BD    mysqld.exe!my_osmaperr()
000000014011E79A    mysqld.exe!my_osmaperr()
0000000140159697    mysqld.exe!my_osmaperr()
0000000140159F53    mysqld.exe!my_osmaperr()
00000001400F05AD    mysqld.exe!my_osmaperr()
00000001400F07C8    mysqld.exe!my_osmaperr()
00000001400F105C    mysqld.exe!my_osmaperr()
00000001400F4FB3    mysqld.exe!my_osmaperr()
00000001400DA97C    mysqld.exe!my_osmaperr()
00000001400C338C    mysqld.exe!my_osmaperr()
0000000076C0652D    kernel32.dll!BaseThreadInitThunk()
0000000076D3C541    ntdll.dll!RtlUserThreadStart()

InnoDB: Thread 408 stopped in file hash0hash.c line 146

http://justpaste.it/efuh

Answer 1:

关键错误

140217 18:51:48  InnoDB: Assertion failure in thread 2052 in file btr0cur.c line 270
InnoDB: Failing assertion: btr_page_get_next(get_block->frame, mtr) == page_get_page_no(page)

这意味着,一个指向下一个页面在叶B +树索引页指向错误页面。 每个页面都有在头部自身的PAGE_ID。

要修复它启动MySQL与innodb_force_recovery = 4和转储为了从头重新创建InnoDB表空间使用mysqldump的所有表。 这很可能是mysqldump的将失败一些表格的(因为页面指针没有一致的列表)。 这这种情况下,转储表中PK的范围或使用脚本像这样

更新 :数据恢复工具包转移到GitHub上



文章来源: MySQL Databases Corrupted