innodb_buffer_pool_sizeとinnodb_log_file_sizeを増やした後、mysqlが起動しない


18

私はここで、このソリューションを、次の午前/programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261と私を増加させようとしたinnodb_buffer_pool_size4G以降1G(1024Mも)にログファイルのサイズに追加されますが、mysqlはこれらの値で開始しません。512Mに戻すと、mysqlは正常に起動します。

どうすれば解決できますか?私のサーバーは16GBのもので、Webmin sysinfoによると:

Real memory 15.62 GB total, 3.13 GB used

一方、エラーログも見つかりました。

120529 10:29:32 pidファイル/var/run/mysqld/mysqld.pidからのmysqld_safe mysqldが終了しました

120529 10:29:33 mysqld_safe / var / lib / mysqlのデータベースを使用してmysqldデーモンを起動する

120529 10:29:33 [注]プラグイン「FEDERATED」は無効になっています。

120529 10:29:33 InnoDB:InnoDBメモリヒープが無効になっています

120529 10:29:33 InnoDB:ミューテックスとrw_locksはGCCアトミックビルトインを使用します

120529 10:29:33 InnoDB:圧縮テーブルはzlib 1.2.3を使用します

120529 10:29:33 InnoDB:LinuxネイティブAIOの使用

120529 10:29:33 InnoDB:バッファープールの初期化、サイズ= 1.0G

120529 10:29:33 InnoDB:バッファープールの初期化が完了しました

InnoDB:エラー:ログファイル./ib_logfile0は異なるサイズ0 134217728バイトです

InnoDB:.cnfファイル0 268435456バイトで指定されているよりも!


そのためのエラーログを共有してもらえますか?
アブドゥルマナフ

おかげで、私はそれを見つけることができた。これはもっと簡単になると思います。また、バッファプールの増加に合わせてログファイルのサイズも増やしたことを最初に追加する必要がありました(この情報を追加しました)。
giorgio79

[OK]を@ giorgio79 ...
アブドゥルManaf

ログファイルを削除してください。
-dezso

最初にログファイルのサイズを削除しましたか?最初にすべてのデータベースを削除しましたか?正確に何をしたかについての情報を追加してください。
-ALH

回答:


19

@RickJames@drogartからの2つの答えは、本質的に救済策です。(各+1)。

表示されたエラーログから、最後の2行に次のように表示されます。

InnoDB:エラー:ログファイル./ib_logfile0は異なるサイズ0 134217728バイトです

InnoDB:.cnfファイル0 268435456バイトで指定されているよりも!`

その時点で、InnoDBトランザクションログ(、)がそれぞれ128M(134217728)であったときに、innodb_log_file_sizeを256M(268435456)に設定したことが明らかでした。あなたの質問のStackOverflow回答へリンクを振り返って、あなたは次のことをしなければなりませんでした:my.cnfib_logfile0ib_logfile1

ステップ01)これをmy.cnf以下に追加します。

[mysqld]
innodb_buffer_pool_size=4G
innodb_log_file_size=1G

ステップ02)OSでこれらのコマンドを実行します

mysql -u... -p... -e"SET GLOBAL innodb_fast_shutdown = 1"
service mysql stop
rm -f /var/lib/mysql/ib_logfile*
service mysql start

何が起こっているのかを確信できるようにtail -f、エラーログに対して実行します。各innodbログファイルが作成されるときに通知するメッセージが表示されます。


ありがとう、うん、最初にそれらを削除しなかった。mysqlの動作を確認したかっただけです。手順3を実行した後、再起動が機能しました。
giorgio79

1
ログファイルを削除するのではなく、他の場所に移動して、ログファイルのサイズを正常に変更したらしばらくしてから削除する必要があると思います。そうしないと、実行する前にMySQLがクラッシュした場合に問題が発生しますservice mysqld stop
KajMagnus

4

ログのエラーに基づいて、私はあなたがこれをしたと推測しています:

  • mysqlをシャットダウンします
  • my.cnfを編集して、innodbログファイルのサイズを変更しました
  • mysqlを起動しようとしました(その後失敗しました)

ログファイルのサイズを変更する場合は、古いログファイルを削除する必要があります。既存のファイルが構成ファイルで指定されたサイズと一致しない場合、Innodbは正常に起動しません。それらを別の場所に移動すると、innodbは起動時に正しいサイズの新しいトランザクションログファイルを作成します。

サーバーが起動し、新しいログファイルで実行され、すべてが正常に見えるまで、古いファイルを削除するのではなく、別のディレクトリに移動することをお勧めします。


3

InnoDBのみを実行している場合、buffer_poolは使用可能な RAMの約70%に設定する必要があります。

ログのサイズはそれほど重要ではありません。最適なのは、(稼働時間* innodb_log_file_size / Innodb_os_log_written)が 3600(1時間)になるように設定することです。

ログサイズを変更するには、

  1. mysqldを完全にシャットダウンします
  2. my.cnf(my.ini)の値を削除します
  3. ログファイルを削除する
  4. retstart-新しいログファイルが再構築されます。

おかげで、はい、これも正解です。私は1つしか受け入れることができませんでした。これも+1しました。
giorgio79

1

また、バッファプールサイズに指定した値に問題がある可能性があります。それは私の場合に起こったように...

増加または減少するinnodb_buffer_pool_size場合、操作はチャンクで実行されます。チャンクサイズはinnodb_buffer_pool_chunk_size構成オプションによって定義され、デフォルトは128Mです。詳細については、InnoDBバッファープールのチャンクサイズの構成を参照してください。

バッファプールのサイズは、常にに等しいか、倍数でなければなりませんinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances。にinnodb_buffer_pool_size等しくない値またはの倍数に設定した場合innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances、バッファプールサイズはinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances、指定したバッファプールサイズ以上の値に自動的に調整されます。

この例でinnodb_buffer_pool_sizeは、8Gにinnodb_buffer_pool_instances設定され、16に設定されinnodb_buffer_pool_chunk_sizeています。128Mはデフォルト値です。

8Gは2Gのinnodb_buffer_pool_size倍数であるため、8Gは有効な値ですinnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M

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