2011-10-16 9 views
9

私はサーバーS1(mysqlバージョン5.1.41-3ubuntu12.7-log)にmysql DBを持っていますが、私はこのデータベースのmaster-slaveをサーバーS2(mysqlバージョン5.1.54-1ubuntu4-log)に作成しました。
S1上のDBが1つのデータファイル(ibdata)を使用していました。 DBをS2にダンプした後、innodb_file_per_table = 1に設定します。これにより、すべてのテーブルに独自のibdファイルが作成されました。今はすべてがうまく行きました。
はなく、S2にMySQLを再起動した後、私はこのエラーを取得して、問題に直面した:
Error 'Unknown table engine 'InnoDB'' on query. Default database: MyDB を、私はエンジンエラー '不明なテーブルエンジン' 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   | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 

のInnoDBを表示しようとすると記載されていません。エラーで
は私がこれを見ることができますログ:

 
InnoDB: Database physically writes the file full: wait... 
InnoDB: Cannot initialize created log files because 
InnoDB: data files are corrupt, or new data files were 
InnoDB: created when the database was started previous 
InnoDB: time but the database was not shut down 
InnoDB: normally after that. 
111016 8:24:11 [ERROR] Plugin 'InnoDB' init function returned error. 
111016 8:24:11 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 
111016 8:24:11 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=S2-relay-bin' to avoid this problem. 

私はib_logfilesを削除しようとしましたが、これは同様に動作しませんでした。
誰もこのような問題に直面しましたか?任意のアイデアは高く評価されています
ありがとう

+0

ははい私がやった、と私はラインの多くを得ているhttp://www.youdidwhatwithtsql.com/unknown-table-engine-innodb/760 – Bala

答えて

17

あなたが削除することができたInnoDBログファイル:あなたがした場合は、これを実行すると、あなたはそれを参照する行の塊を持っている必要があります。 InnoDBデータファイル(ibdata1)は削除しないでください。

その後、InnoDBはmysqldの再起動後に回復を試みます。私はあなたがinnodb_buffer_pool_size = 2Gを設定した場合のInnoDB用のMySQLの設定は、InnoDBは動作しないだろうと思い

120413 17:34:47 InnoDB: Initializing buffer pool, size = 64.0M 
120413 17:34:47 InnoDB: Completed initialization of buffer pool 
120413 17:34:47 InnoDB: Log file .\ib_logfile0 did not exist: new to be created 
InnoDB: Setting log file .\ib_logfile0 size to 32 MB 
InnoDB: Database physically writes the file full: wait... 
120413 17:34:48 InnoDB: Log file .\ib_logfile1 did not exist: new to be created 
InnoDB: Setting log file .\ib_logfile1 size to 32 MB 
InnoDB: Database physically writes the file full: wait... 
InnoDB: The log sequence number in ibdata files does not match 
InnoDB: the log sequence number in the ib_logfiles! 
120413 17:34:49 InnoDB: Database was not shut down normally! 
InnoDB: Starting crash recovery. 
+1

あなたは私の人生を救っただけです。 +1 – Clayton

+0

ええ、私の場合は、mysqldを再起動していただきありがとう – Nedudi

1

mysqlをinnodbでコンパイルしましたか? MySQLのデータディレクトリと呼ばib_logfile0とib_logfile1に

strings `which mysqld` | grep innodb 
+0

を試してみてください上記のコマンドを実行すると...また、innodbエンジンがあって、mysqlを再起動するまでうまくいきました! – Alaa

2

:メインのログファイルで

表情。あなたはinnodb_buffer_pool_size = 1Gを試すのInnoDBシステムとテーブルを選択した場合

は、通常はエラーに

"Unknown table engine 'InnoDB". 

を与えます。

4

サーバーがハングして再起動した後も同様の問題がありました。

データは問題ありません。エラーメッセージは非常に誤解を招くことがあります。

MySQLサービスを停止し、/var/lib/mysqlからログファイル(ib_logfile*)を削除し、MySQLサービスを開始してください。 ログファイルを削除するときにMySQLが実際にダウンしていることを100%確かめてください。

0

同じ問題が発生しました。 Niklの答えは、メインのログファイルで問題を見つけるのを助けました。 InnoDBは起動時に必要なメモリを割り当てることができませんでした。他のプロセスをクリーニングした後、すべてが正常に開始されました。

ログには、以下を示した:

160219 9:20:23 InnoDB: Error: cannot allocate 12884918272 bytes of InnoDB: memory with malloc! Total allocated memory InnoDB: by InnoDB 49601872 bytes. Operating system errno: 12 InnoDB: Check if you should increase the swap file or InnoDB: ulimits of your operating system. InnoDB: On FreeBSD check you have compiled the OS with InnoDB: a big enough maximum process size. InnoDB: Note that in most 32-bit computers the process InnoDB: memory space is limited to 2 GB or 4 GB. InnoDB: We keep retrying the allocation for 60 seconds...

関連する問題