不明またはサポートされていないストレージエンジン:InnoDB | MySQL Ubuntu


45

最近、以前のLTS UbuntuからPreciseにアップグレードしましたが、mysqlは起動を拒否します。起動しようとすると、次のエラーが表示されます。

╰$ sudo service mysql restart
stop: Unknown instance:
start: Job failed to start

そして、これは「/var/log/mysql/error.log」に表示されます。

120415 23:01:09 [Note] Plugin 'InnoDB' is disabled.
120415 23:01:09 [Note] Plugin 'FEDERATED' is disabled.
120415 23:01:09 [ERROR] Unknown/unsupported storage engine: InnoDB
120415 23:01:09 [ERROR] Aborting

120415 23:01:09 [Note] /usr/sbin/mysqld: Shutdown complete

すべてのmysqlディレクトリのパーミッションをチェックして、所有権があることを確認しました。また、previou ib_logsの名前を変更して、再作成できるようにしました。Googleの結果を2時間確認した後、この問題で今どこにもないのです。


ちなみに、my.cnfの「skip_innodb」エントリをコメントアウトして、mysqlを実行しました。しかし、私はこの方法でこれを解決することになっていないと確信しています。
ギャレット

innodb設定であるmy.cnfのすべての変数を表示してください
RolandoMySQLDBA

回答:


34

ログを確認した後、次のエラーが見つかりました。

[ERROR] Unknown/unsupported storage engine: InnoDB

これらのファイルを削除しました:

rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile1 

/var/lib/mysql

これにより、再起動後に問題が解決しました。


7
rm私が知っているようにコマンドが限りではなく、ファイルのリネーム、それらを削除するために使用されています...
板井Ganot

2
これらのファイルには、データベースの実際のデータが含まれています。それらを削除したくありません。
ステファンLasiewski 14年

いいえ、ibdataファイルにはデータが含まれています(テーブルごとのファイルがない場合)。ib_logfileファイルは、データベースがクラッシュしたとき/場合に処理中だった可能性のあるデータベース変更トランザクションのデータを含む再生ログです。サーバーを正常にシャットダウンできた場合、これらのログファイルを削除しても問題はありません。クラッシュした場合は、それらが必要です。しかし、これは有効な答えです。my.cnfファイルがinnodb_log_file_sizeオプションを変更し、これらの2つのファイルと一致しなくなった場合、OPが示すエラーメッセージが表示されます。新しいものを作成できるように削除/移動すると修正されます。
サファド14年

2
なぜ編集が5分間しかできないのかは私を超えています... 上記のエラーの潜在的な修正であると述べたはずです。OPが述べたように、それは彼が必要とした修正ではありませんでした。
サファド14年

1
いつでも名前を変更できmv ib_logfile0 ib_logfile0.bak && mv ib_logfile1 ib_logfile1.bakます。
ケノーブ

23

本当に必要な場合skip-innodb(ユースケース:低メモリフットプリント)、もちろんコメントアウトする必要はありません。ただし、InnoDBがデフォルトのストレージエンジンである場合default-storage-engine=myisam、MyISAMなどに代わりに使用するストレージエンジンを指定するまで、サーバーは起動に失敗します。

だから、これを試してください:

$ sudo -u mysql mysqld --skip-innodb --default-storage-engine=myisam

6
「skip_innodb」が必要な場合は、[ default-storage-engine = myisam ]を[mysqld]セクションの/etc/mysql/my.cnfに追加してみてください 。
ピンコード

美しく機能します。乾杯!
Boann

4
innodb-supportが必要な場合はどうしますか?
ニルゾール

1
Centos 7のdefault-storage-engine=myisamMariadbがファイル/etc/my.cnfの下に追加されました[mysqld]。それはトリックをしました。Thx
ダモダールバシャール

12

MySQL 5.6+を使用しており、InnoDBを無効にする場合は、「-- default-tmp-storage」を忘れないでください。機能しない場合があります。

InnoDBを無効にするには、-innodb = OFFまたは--skip-innodbを使用します。この場合、デフォルトのストレージエンジンはInnoDBであるため、-default-storage-engineおよび--default-tmp-storage-engineを使用して、永続およびその他の両方のデフォルトを他のエンジンに設定しない限り、サーバーは起動しません一時テーブル。

http://dev.mysql.com/doc/refman/5.6/en/innodb-parameters.html#option_mysqld_ignore-builtin-innodb

これをmy.cnfに追加できます。

[mysqld] 
innodb=OFF 
ignore-builtin-innodb 
skip-innodb
default-storage-engine=myisam 
default-tmp-storage-engine=myisam

動作することを確認するだけです。


+1、公式文書に気付かない。設定する必要が default-storage-engineありますdefault-tmp-storage-engine、ありがとう。
ジベルノ14年

7

mysqlエラーログを確認します。

tail -100 /var/log/mysql/error.log

ログに(私のように)と書かれている場合:

InnoDB:バッファープールの初期化、サイズ= 128.0M
InnoDB:mmap(137363456バイト)が失敗しました。errno 12
[エラー] InnoDB:バッファープールにメモリを割り当てることができません

デフォルトのバッファサイズ128Mを使用するのに十分なメモリがありません

構成ファイル/etc/mysql/my.cnfを編集して行を追加し、より小さいinnodb_buffer_pool_sizeを指定します。

# make the buffer pool smaller than 128M since we only have 1 GB of total RAM
innodb_buffer_pool_size = 16M

構成ファイルを保存し、mysqlを起動します

sudo service mysql start

ここにスポットがあります。しかし、Webサーバーのプロセスがハングしたり、RAMを使い果たしたりする可能性もあります。それも確認してください。
-sjas

0

さらに2つ試してください。1. innodbバッファープールのサイズを小さくします。2. mysqlの初期スクリプトを編集し、-innodbオプションを追加します。

また、パッケージにバグがあるのではないかと思います。別のマイナーバージョンを試すことはできますか?

また、mysqlサーバーもアップグレードされたと思いますか?たぶんそのバージョンは壊れていますか?正確なものはまだ最終的なものではありません。


すでにそれを行ったが、効果はなかった。
ギャレット

申し訳ありませんが、試してみてください、もっと悪いパッケージのように編集しました。通常はより安定しているmysql.comバージョンまたはperconaを使用してみてください。
-johnshen64

また、新しいパッケージをインストールするときに、古いパッケージが完全に削除されることを確認してください。
-johnshen64

パッケージを完全に削除すると、データベース情報が失われますか?
ギャレット

すべきではありませんが、安全のために、常にDBSをバックアップする必要があります。
johnshen64

0

使用する場所を削除すると、このエラーが発生しましたtmpdir。を最近変更しtmpdirた場合は、有効で書き込み可能な場所であることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.