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

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) at line 2: Lost connection to MySQL server during query”错误,重新启动了 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 后,它现在可以正常工作

答案1

InnoDB 对其配置非常挑剔;如果出现问题,它就会放弃并返回。若要更改日志文件大小而不丢失数据,请执行以下操作:

  1. 恢复对日志文件大小所做的任何配置更改并重新启动 MySQL。
  2. 在运行的 MySQL 中:SET GLOBALinnodb_fast_shutdown=0;
  3. 停止 MySQL
  4. 对日志文件大小进行配置更改。
  5. 删除两个日志文件。
  6. 启动 MySQL。它会抱怨缺少日志文件,但它会创建它们,一切都会好起来。

相关内容