2009-08-13 63 views
7

我没有做过多的调整,所以这可能相对容易,但我遇到了问题。这是我做的:问题改变innodb_log_file_size

  1. 停止MySQL的
  2. 编辑my.cnf文件(改变innodb_log_file_size
  3. 删除ib_logfile0/1
  4. 启动MySQL

启动正常不过的所有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 '[email protected]' 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' 

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

当它没有启动重建后日志文件,所以它必须在我看到的地方。

回答

15

首先,我必须指出,在InnoDB数据文件中的任何chage之前,应该读取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 S)。但是,在删除它们时会产生另一个问题。数据损坏XXXX \ User.frm或InnoDB引擎的一些问题。

要确保InnoDB的启用,运行在一个MySQL提示此命令:

show variables like "%inno%"; 

在结果列表中必须有“have_innodb = YES”。有时当InnoDB可以启动而不是(值为NODISABLED)时,会出现Incorrect information in file消息。
- 如果出现这种问题,您更改了其他防止InnoDB引擎正常启动的其他内容(datadir的权限或tmpdir的权限,其他innodb变量(,您没有显示完整日志,等) 。查看更改或将.cnf文件(之前和之后)。
- 如果InnoDB引擎是YES那么您必须修复表格。 (如果it's这种情况下,添加评论和I'll在这里添加信息。现在I'm懒得去做。)

+0

为什么donwvote?我怎么能改进它? – 2009-08-25 17:09:08

+0

我建议完全关闭所以首先'SET GLOBAL innodb_fast_shutdown = 0;' – KCD 2013-04-11 05:27:13

1

错误的第一行表明您没有删除ib_logfile0。你能确认你是重新命名/删除正确的吗?

0

检查事项:

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

有足够的空间。 (约250克免费) 根本没有创建日志文件,我运行启动后,他们不存在任何地方。 在根上查找了ib_logfile *,并找回了我从中删除它们的唯一位置。 – savageguy 2009-08-19 15:43:47

0

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

个人而言,我喜欢SQuirreL

+3

innodb相关字段不能在客户端内编辑。它们必须在my.cnf中编辑,并在服务重新启动时作为新值。 – 2009-08-25 19:56:42

0

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

如果是这样,请确保您从那里删除了ib_logfiles而不是数据目录。