innodbが使えなくなっていた

先日からshow engines;を実行すると、innodbがなくなっていたことに気がついた。

どうやらmax_connectionsを増やしすぎたせいでinnodb分のメモリが足りなくなっていた模様。

mysql> show engines;
+————+———+—————————————————————-+————–+——+————+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+————+———+—————————————————————-+————–+——+————+
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+————+———+—————————————————————-+————–+——+————+
7 rows in set (0.00 sec)

このままだと困るのでメモリ関連のパラメタをいじって直してやるとする。

再起動すると早速エラーメッセージが。

InnoDB: Error: data file ./ibdata1 is of a different size
InnoDB: 640 pages (rounded down to MB)
InnoDB: than specified in the .cnf file 64000 pages!
InnoDB: Could not open or create data files.
InnoDB: If you tried to add new data files, and it failed here,
InnoDB: you should now edit innodb_data_file_path in my.cnf back
InnoDB: to what it was, and remove the new ibdata files InnoDB created
InnoDB: in this failed attempt. InnoDB only wrote those files full of
InnoDB: zeros, but did not yet use them in any way. But be careful: do not
InnoDB: remove old data files which contain your precious data!
100426  6:15:03 [ERROR] Plugin ‘InnoDB’ init function returned error.
100426  6:15:03 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.

どうやらibdata周りで引っかかったらしい。

該当する行を調べたところ

#innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_data_file_path = ibdata1:1000M;ibdata2:10M:autoextend
innodb_file_per_table

となっている。実際のファイルはibdata1が10Mしかない。おそらく過去に安易な考えでibdataを作って放置したりしてたんだろうね。

ここで各ファイルをバックアップする。

#sudo mv ibdata1 ibdata1.bak
#sudo mv ib_logfile0 ib_logfile0.bak

#sudo mv ib_logfile1 ib_logfile1.bak

#sudo mv ibdata2 ibdata2.bak

ログも一緒にやってやらないと、mysql起動時にログファイルと内容違うやんけ、って怒られた。

以上をやってmysqlを起動して、エラーログを確認して、show engines;すれば完了。

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 136
Server version: 5.1.45-log FreeBSD port: mysql-server-5.1.45

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> show engines;
+————+———+—————————————————————-+————–+——+————+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+————+———+—————————————————————-+————–+——+————+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+————+———+—————————————————————-+————–+——+————+
8 rows in set (0.00 sec)

ついでにmysqlのバージョンも5.1.33から5.1.45にあげてやった。

change the database engine
ほげ

コメントを残す