10

サーバー S1 (mysql バージョン 5.1.41-3ubuntu12.7-log) に mysql DB があり、サーバー S2 (mysql バージョン 5.1.54-1ubuntu4-log) にこの DB のマスタースレーブを作成しました。
S1 の DB は 1 つのデータ ファイル (ibdata) を使用していました。DBをS2にダンプした後、innodb_file_per_table = 1を設定しました。これにより、すべてのテーブルに独自の ibd ファイルが作成されました。今ではすべてがうまくスムーズに進みました。
しかし、S2 で mysql を再起動した後、このエラーが発生するという問題に直面しました:
Error 'Unknown table engine 'InnoDB'' on query. Default database: MyDB エンジンを表示しようとすると

エンジンを表示します。
+------------+---------------------+-------------------------- --------------------------------------+----------------------- ---+------+------------+
| | エンジン | エンジン | サポート | コメント | 取引 | XA | セーブポイント |
+------------+---------------------+-------------------------- --------------------------------------+----------------------- ---+------+------------+
| | MyISAM | デフォルト | MySQL 3.23 以降のデフォルト エンジンは優れたパフォーマンスを発揮 | いいえ | いいえ | いいえ |
| | MRG_MYISAM | はい | 同一の MyISAM テーブルのコレクション | いいえ | いいえ | いいえ |
| | ブラックホール | はい | /dev/null ストレージ エンジン (書き込んだものはすべて消えます) | いいえ | いいえ | いいえ |
| | CSV | はい | CSV ストレージ エンジン | いいえ | いいえ | いいえ |
| | メモリー | はい | ハッシュベース、メモリに保存、一時テーブルに便利 | いいえ | いいえ | いいえ |
| | フェデレーテッド | いいえ | フェデレーテッド MySQL ストレージ エンジン | ヌル | ヌル | ヌル |
| | アーカイブ | はい | アーカイブ ストレージ エンジン | いいえ | いいえ | いいえ |
+------------+---------------------+-------------------------- --------------------------------------+----------------------- ---+------+------------+

innodb はリストされていません。
エラーログで私はこれを見ることができます:

InnoDB: データベースは物理的にファイルをフルに書き込みます: 待ちます...
InnoDB: 作成されたログ ファイルを初期化できません。
InnoDB: データ ファイルが破損しているか、新しいデータ ファイルが
InnoDB: データベースが以前に起動されたときに作成されました
InnoDB: 時間ですが、データベースはシャットダウンされませんでした
InnoDB: 通常はその後。
111016 8:24:11 [エラー] プラグイン 'InnoDB' init 関数がエラーを返しました。
111016 8:24:11 [エラー] プラグイン 'InnoDB' を STORAGE ENGINE として登録できませんでした。
111016 8:24:11 [警告] --relay-log も --relay-log-index も使用されていません。そのため、この MySQL サーバーがスレーブとして機能し、ホスト名が変更されると、レプリケーションが中断する可能性があります!! この問題を回避するには、「--relay-log=S2-relay-bin」を使用してください。

ib_logfiles を削除しようとしましたが、これもうまくいきませんでした。
誰も前にそのような問題に直面しました?? どんなアイデアでも大歓迎です
ありがとう

4

5 に答える 5

23

ib_logfile0 および ib_logfile1 と呼ばれる mysql データ ディレクトリ内の InnoDB ログ ファイルを削除できます。ただし、InnoDB データ ファイル (ibdata1) は削除しないでください。

その後、mysqld を再起動すると、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.
于 2012-04-13T13:39:45.347 に答える
4

サーバーがハングして再起動した後、同様の問題が発生しました。

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

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

于 2014-02-19T08:25:58.197 に答える
2

innodb 用の mysql の設定を に設定すると innodb が動かなくなると思いますinnodb_buffer_pool_size = 2G

通常、エラーが発生します

"Unknown table engine 'InnoDB".

innodb システムでテーブルを選択する場合は、innodb_buffer_pool_size = 1G を試してください。

于 2012-10-12T07:45:44.123 に答える
1

mysql を innodb でコンパイルしましたか? そうした場合、これを実行すると、それを参照する行の塊が表示されるはずです。

strings `which mysqld` | grep innodb
于 2011-10-16T07:11:41.380 に答える
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...

于 2016-02-19T09:22:28.460 に答える