多くの answers 、ディスカッション、コメントでは、一般的な知識は「innodb_log_file_sizeをinndb_buffer_pool_size
の25%に設定すること」です。
かなり大きなバッファプールはどうですか?たとえば、64GiBのメモリを搭載したサーバーがあり、バッファプールは現在38GiBです。その25%は9.5GiBです。 「大きすぎる」innodb_log_file_size
を「小さすぎる」ままにすることのリスクは何ですか?
64GiBを利用できるので、innodb_buffer_pool_size
を40GiBを超える可能性があり、おそらくそれ以上に増やす可能性があります。 10GiB +のログファイルのサイズについて、何か不安になります。私は不必要に心配していますか?
短い答えinnodb_log_file_size
の値は、ほとんどのサーバーにとってあまり重要ではありません。
長い答え
ベンチマークは、サーバーに限界までストレスをかける傾向があります。アプリケーションにそれほど多くのストレスがかかっている場合、それはキールオーバーします。
より良い方法は
Uptime / 60 * innodb_log_file_size / Innodb_os_log_written
約60(ログローテーション間の分)である必要があります。これをひっくり返すと、これはinnodb_log_file_size
の大まかな見積もりになります。
Innodb_os_log_written / (Uptime / 3600) / innodb_log_files_in_group
2倍(または5倍)ずれている場合は、あまり問題になりません。
クラッシュ発生時の復旧時間と、データベースがサポートすると予想される書き込みスループットの大きさの間の適切なトレードオフを見つける必要があります。
Percona 素晴らしい投稿があります 64GBのバッファープールを使用して、あなたと同様のシナリオについて議論し、記事の約2/5の部分で、2GBと15GBのログファイルの素晴らしい比較を見ることができます。
15GBは、innodbがログからページを「スムーズに」フラッシュするのに十分なログスペースを許可しますが、2GBを使用すると、ログがいっぱいにならないようにするためのプレッシャーが高まり、最終的にはページを削除する必要があるため、パフォーマンスが低下します。彼らが引用したベンチマークでは、結果としてパフォーマンスが20%低下しています。
TL; DR特に大きなログファイルで問題が発生することはありません。クラッシュ時にフェイルオーバーするスレーブがあるが、小さすぎるスレーブを使用するとパフォーマンスが低下する場合があります。