mysql不会启动 - innoDB:数据库没有正常关闭

时间:2013-02-11 02:51:27

标签: mysql

我办公室的mysql服务器突然停机,无法启动。我用了XAMPP。 当看到日志时,它显示如下:

130211  9:45:04 [Note] Plugin 'FEDERATED' is disabled.
130211  9:45:04 InnoDB: The InnoDB memory heap is disabled
130211  9:45:04 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130211  9:45:04 InnoDB: Compressed tables use zlib 1.2.3
130211  9:45:04 InnoDB: Initializing buffer pool, size = 16.0M
130211  9:45:04 InnoDB: Completed initialization of buffer pool
130211  9:45:04 InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
130211  9:45:04  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...

有谁知道为什么会这样?我真的需要建议,我的老板生气了..:D

2 个答案:

答案 0 :(得分:7)

这是崩溃后的正常输出。 InnoDB旨在在这些情况下自动恢复,但可能需要一些时间。通常是几分钟,但如果在内存中有数千页已修改数据并且磁盘速度很慢的情况下发生崩溃,则可能是几小时。

尽管@tadman说过,但它并不一定会破坏你的数据。在大多数情况下,InnoDB可以自行恢复,没有数据丢失。

InnoDB可能会在崩溃中更严重地被破坏,并且它可能无法在所有情况下恢复。但是您显示的错误日志输出未显示任何不可恢复的损坏报告。崩溃后启动MySQL服务时,消息是正常输出。等待它完成,直到它显示“准备连接”,然后连接并执行一些临时查询以检查数据是否正确。

至于导致坠机的原因,有很多可能的原因。例如,如果您突然关闭计算机电源,就会发生这种情况。或者如果你杀了MySQL服务。你在另一条评论中询问了病毒。从理论上讲,病毒可能故意杀死MySQL服务。

或者可能是由于MySQL中的软件错误。

没错 - 所有软件都包含错误!你的老板可能会对此感到生气,他甚至可以要求将MySQL抛出并切换到其他数据库。但是,世界上没有任何数据库软件能够100%免疫导致崩溃的错误。

答案 1 :(得分:1)

你通过硬崩溃破坏了服务器的InnoDB表。有时,您需要调整my.cnf中的设置才能启用recovery mode。这些表通常处于只读模式,因此您必须进行备份,清除MySQL数据目录,并使用mysql-install-db重新初始化MySQL以从头开始。

这可以作为备份任何和所有重要数据的提醒。