天天看点

改变innodb_log_file_size后无法启动mysql---unknow table engine InnoDB

我的情况是 我在优化mysql的时候修改了关于Innodb参数的数值,造成前后不一致,从而导致Innodb数据的表无法支持,

而 show engines;的时候,也没有Innodb存储引擎.

幸亏修改的时候有备份,恢复备份,重启mysql,恢复正常。

错误日志:

InnoDB: Error: log file /data/database/ib_logfile0 is of different size 0 134217728 bytes

InnoDB: than specified in the .cnf file 0 268435456 bytes!

121226 12:05:39 [ERROR] Plugin 'InnoDB' init function returned error.

121226 12:05:39 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

121226 12:05:39 [Warning] 'user' entry '[email protected]' ignored in --skip-name-resolve mode.

121226 12:05:39 [Warning] 'user' entry '@school-my.chinaedu.com' ignored in --skip-name-resolve mode.

121226 12:05:39 [Note] Event Scheduler: Loaded 0 events

121226 12:05:39 [Note] /home/101/mysql/libexec/mysqld: ready for connections.

Version: '5.1.46-log'  socket: '/tmp/mysql.sock'  port: 3306  Source distribution

------------------------------------

今天对MySQL数据库进行了物理拷贝,遇到一个棘手的问题,MySQL能正常启动,不过打开数据表的时候,提示Unknow Table Engine InnoDB.

错误提示很明显是没有加载InnoDB。在网上找了一下,基本上有两种方法:

1:注释掉skip-innodb选项

2:删掉两个 ib_logfile* 文件

不过这两个方法都没用。我查看了MySQL的错误日志,发现有以下提示:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 25165824 bytes

InnoDB: than specified in the .cnf file 0 5242880 bytes!

原来我拷贝过去的log文件最大是24MB,而MySQL默认的配置是5MB,这两个数值不统一,导致了InnoDB启动时出现了错误。

解决方法:修改MySQL的配置:    innodb_log_file_size    = 24M    。其中24M对应的就是你的logfile的大小。

----------------------------------------------

最近在看MYSQL优化的参数,改了innodb_log_file_size参后,启动下面报错,然来是改了这个参数后需要关闭MYSQLSQL删除ib_logfile0, ib_logfile1这些文件,再启动MYSQL。

080622 10:53:27 mysqld_safe mysqld from pid file /usr/local/mysql/data/localhost.localdomain.pid ended

080622 10:53:27 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

InnoDB: Error: log file /usr/local/mysql/data/ib_logfile0 is of different size 0 104857600 bytes

InnoDB: than specified in the .cnf file 0 134217728 bytes!

080622 10:53:28 [ERROR] Plugin 'InnoDB' init function returned error.

080622 10:53:28 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

080622 10:53:28 [Note] Event Scheduler: Loaded 0 events

080622 10:53:28 [Note] /usr/local/mysql/libexec/mysqld: ready for connections.

Version: '5.1.24-rc-log'  socket: '/usr/local/mysql/tmp/mysql.sock'  port: 3307  Source distribution

080622 10:53:28 [Note] Event Scheduler: scheduler thread started with id 1

080622 11:20:07 [Note] /usr/local/mysql/libexec/mysqld: Normal shutdown

今天有点忙,经过1个多星期的压力测试后,得到了很多数据,着手根据数据进行数据库服务器的优化!最累就是这个东西了- -

     优化方案在完成后我贴出来慢慢说,现在先记录下今天碰到的第一个问题………

     优化INNODB引擎的参数的时候,为了进一步提高效率,又一次提高了innodb_buffer_pool_size的值(768M,服务器很烂,内存就1G,预订的服务器还没到,估计到时候又要测一次,又要累了,所以老总的要求就是在这种烂服务器上测个大概,比较好定位将来要买什么价位的服务器………)

     innodb_buffer_pool_size=768M

     innodb_log_file_size=256M

     innodb_log_buffer_size=8M

innodb_additional_mem_pool_size=4M

innodb_flush_log_at_trx_commit=0

innodb_thread_concurrency=20

以上是对innodb引擎的初步优化,我们是一次性更换了所有的参数,然后保存配置文件,然后无法启动mysql,最后一步一步来发现是更新innodb_log_file_size=256M时候出现了问题,只要加上这个就无法启动(第一次没经验啊- -汗了)。

后来才知道原来要STOP服务先,然后再删除原来的文件………

打开/var/lib/mysql

删除ib_logfile0, ib_logfile1........ib_logfilen

再开启选项,成功启动。     

继续阅读