我将一个数据库转换为使用InnoDB引擎后,在/etc/mysql/my.cnf中添加了以下几行。

innodb_buffer_pool_size = 2560M
innodb_log_file_size    = 256M
innodb_log_buffer_size  = 8M
innodb_flush_log_at_trx_commit  = 2
innodb_thread_concurrency   = 16
innodb_flush_method = O_DIRECT


但它会引发“ ERROR 2013(HY000 ):在第2行:“在查询过程中失去与MySQL服务器的连接”,并重新启动mysqld。 mysql错误日志显示以下内容

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting


所以我注释掉了这一行

# innodb_log_file_size  = 256M


它重新启动了mysql成功。

我想知道mysql错误中显示的“ 5242880字节的日志文件”是什么?它是该服务器上InnoDB引擎上的第一个数据库,因此该日志文件何时何地创建?在这种情况下,如何在my.cnf中启用innodb_log_file_size指令?

EDIT

我试图删除/ var / lib / mysql / ib_logfile0并重新启动mysqld,但仍然失败了现在,它在错误日志中显示以下内容。

100118 21:27:11  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!


解决方案

在/ var / lib /中删除了ib_logfile0和ib_logfile1之后,它现在可以工作mysql

#1 楼

InnoDB对它的配置非常挑剔。如果有什么不对劲,那就放弃并回家。要更改日志文件大小而不会丢失数据,请执行以下操作:


还原对日志文件大小所做的所有配置更改,然后再次启动MySQL。
在运行的MySQL中:SET GLOBAL innodb_fast_shutdown = 0;
停止MySQL
对日志文件大小进行配置更改。
删除两个日志文件。
启动MySQL。 。它会抱怨缺少日志文件,但会创建它们,一切都会好起来。


评论


嗨,感谢您的回答,我尝试了您的方法,但仍然失败。

– jack
2010-1-19的3:30

删除ib_logfile0和ib_logfile1对我来说解决了这个问题。

–Temnovit
2012年4月17日在16:33

为了我非常感谢您,我们的维基又回来了!

–斯蒂芬·肯尼迪(Stephen Kennedy)
2012年4月20日在18:46

由于我要重新安装新安装的数据库,因此我跳过了步骤1-4,从5开始-它可以正常工作:)

–彭林波
2014年7月27日在15:13

感谢@Temnovit删除这2个文件也为我做了窍门。

–巴山
2015年9月2日下午16:35