更改innodb_log_file_size的问题

时间:2009-08-13 16:14:40

标签: mysql innodb

我过去没有做太多的调整,所以这可能相对容易但是我遇到了问题。这就是我的工作:

  1. 停止MySQL
  2. 编辑my.cnf(更改innodb_log_file_size
  3. 删除ib_logfile0 / 1
  4. 启动MySQL
  5. 启动正常然而所有InnoDB表都有.frm文件无效错误,状态显示InnoDB引擎被禁用,所以我显然回去,删除更改,一切都恢复正常。

    我能够更改我尝试过的所有其他变量,但我似乎无法找出为什么即使在删除日志文件后InnoDB也无法启动。我错过了什么吗?

    感谢。

    编辑:粘贴下面的日志 - 看起来似乎仍然找不到日志文件,即使它们不存在?

    关机:

    090813 10:00:14  InnoDB: Starting shutdown...
    090813 10:00:17  InnoDB: Shutdown completed; log sequence number 0 739268981
    090813 10:00:17 [Note] /usr/sbin/mysqld: Shutdown complete
    

    进行更改后启动:

    InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
    InnoDB: than specified in the .cnf file 0 268435456 bytes!
    090813 11:00:18 [Warning] 'user' entry 'root@XXXXX.com' ignored in --skip-name-resolve mode.
    090813 11:00:18 [Note] /usr/sbin/mysqld: ready for connections.
    Version: '5.0.81-community-log'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Edition (GPL)
    090813 11:00:19 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './XXXX/User.frm'
    090813 11:00:19 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './XXXX/User.frm'
    090813 11:00:19 [ERROR] /usr/sbin/mysqld: Incorrect information in file: './XXXX/User.frm'
    

    它只是一个同样错误的垃圾邮件,直到我纠正它

    当它重新创建日志文件后启动它所以它必须在同一个地方寻找我。

5 个答案:

答案 0 :(得分:15)

首先,我必须指出,在InnoDB数据文件中的任何变形之前,应该阅读13.2.5. Adding, Removing, or Resizing InnoDB Data and Log Files

您指出的步骤几乎是正确的。建议在此类更改之前进行备份。让我们看看你发生了什么:

错误消息

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!

是由更改innodb_log_file_size的大小而不是删除旧文件引起的。可能你忘了在更改后第一次运行mysqld时删除de ib_logfile0/1。消息

090813 11:00:18 [Note] /usr/sbin/mysqld: ready for connections.

表明您已解决此问题(通过删除ib_logfile)。但是,在删除它们时,您会产生另一个问题。 XXXX \ User.frm数据损坏或InnoDB Engine出现问题。

要确保启用InnoDB,请在mysql提示符下运行此命令:

show variables like "%inno%";

在结果列表中必须有“have_innodb = YES”。有时,InnoDB可以启动(值为NODISABLED),会显示Incorrect information in file消息。
- 如果这是问题,你已经改变了阻止InnoDB引擎正常启动的其他东西(datadir的权限或tmpdir的权限,其他innodb变量(你没有显示完整的日志。),等等。)。查看更改或放置.cnf文件(之前和之后) - 如果InnoDB引擎是YES,那么你必须修复表。 (如果是这种情况,请添加评论,我会在这里添加信息。我现在太懒了。)

答案 1 :(得分:1)

错误中的第一行表明您尚未删除ib_logfile0。你能确认你正在重命名/删除正确的吗?

答案 2 :(得分:0)

要检查的事项:

  • 设备上是否有足够的空间来创建该大小的日志文件?此行为可能来自完整设备。
  • 是否使用错误的设置创建了日志文件?
  • 您的日志文件路径不会显示为绝对路径。只是为了咧嘴笑,看看你的驱动器上是否有任何其他位置包含ib_logfile0。可能是一个愚蠢的小虫。

答案 3 :(得分:0)

您是否尝试过使用SQL客户端编辑innodb_log_file_size字段?

我个人喜欢SQuirreL

答案 4 :(得分:0)

我怀疑您删除了错误的日志文件。环顾四周寻找其他ib_logfile *文件。也许你正在使用innodb_log_group_home_dir?

如果是这样,请确保从那里删除了ib_logfiles而不是datadir。