题 InnoDB:错误:日志文件./ib_logfile0的大小不同


在我将一个数据库转换为使用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指令?

编辑

我试图删除/ 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 / mysql中的ib_logfile0和ib_logfile1后,它现在可以正常工作


101
2018-01-19 03:02






答案:


InnoDB对它的配置非常挑剔;如果事情不对,它就会放弃回家。要在不丢失数据的情况下更改日志文件大小:

  1. 将您对日志文件大小所做的任何配置更改还原,然后再次启动MySQL。
  2. 在你运行的MySQL中:SET GLOBAL innodb_fast_shutdown= 0;
  3. 停止MySQL
  4. 将配置更改为日志文件大小。
  5. 删除两个日志文件。
  6. 启动MySQL。它会抱怨缺少日志文件,但它会创建它们并且一切都会很好。

114
2018-01-19 03:06



嗨,谢谢你的回答,我试过你的方法,但仍然失败了。 - jack
删除ib_logfile0和ib_logfile1解决了我的问题。 - Temnovit
而对我来说。非常感谢,我们回到了wiki! - Stephen Kennedy
因为我正在重新定位一个新安装的数据库,所以我跳过步骤1-4并从5开始 - 它工作正常:) - Limbo Peng
感谢@Temnovit删除这两个文件也为我做了伎俩。 - bashan