MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  コアファイルからのバッファープールページの除外

15.8.3.7 コアファイルからのバッファープールページの除外

コアファイルには、実行中のプロセスのステータスとメモリーイメージが記録されます。 バッファープールはメインメモリー内に存在し、実行中のプロセスのメモリーイメージがコアファイルにダンプされるため、mysqld プロセスが終了すると、バッファープールが大きいシステムで大きなコアファイルが生成される可能性があります。

大規模なコアファイルは、書込みにかかる時間、それらが消費するディスク領域の量、大規模なファイルの転送に関連する課題など、様々な理由で問題になる可能性があります。

コアファイルサイズを減らすには、innodb_buffer_pool_in_core_file 変数を無効にして、コアダンプからバッファプールページを省略します。 innodb_buffer_pool_in_core_file 変数は MySQL 8.0.14 で導入され、デフォルトで有効になっています。

デバッグ目的で組織内外で共有される可能性のあるコアファイルにデータベースページをダンプすることに懸念がある場合は、セキュリティの観点からバッファプールページを除外することも望ましい場合があります。

注記

一部のデバッグシナリオでは、mysqld プロセスの停止時にバッファプールページに存在するデータへのアクセスが有益な場合があります。 バッファープールページを含めるか除外するかが疑わしい場合は、MySQL サポートに問い合わせてください。

innodb_buffer_pool_in_core_file の無効化は、core_file 変数が有効で、オペレーティングシステムが madvise() システムコールに対する MADV_DONTDUMP の POSIX 以外の拡張機能をサポートしている場合にのみ有効になります。これは Linux 3.4 以降でサポートされています。 MADV_DONTDUMP 拡張機能を使用すると、指定した範囲のページがコアダンプから除外されます。

オペレーティングシステムで MADV_DONTDUMP 拡張機能がサポートされている場合は、--core-file および --innodb-buffer-pool-in-core-file=OFF オプションを使用してサーバーを起動し、バッファプールページなしでコアファイルを生成します。

shell> mysqld --core-file --innodb-buffer-pool-in-core-file=OFF

core_file 変数は読取り専用で、デフォルトで無効になっています。 これを有効にするには、起動時に --core-file オプションを指定します。 innodb_buffer_pool_in_core_file 変数は動的です。 起動時に指定するか、SET ステートメントを使用して実行時に構成できます。

mysql> SET GLOBAL innodb_buffer_pool_in_core_file=OFF;

innodb_buffer_pool_in_core_file 変数が無効になっているが、MADV_DONTDUMP がオペレーティングシステムでサポートされていない場合、または madvise() 障害が発生した場合は、MySQL サーバーのエラーログに警告が書き込まれ、core_file 変数は、意図せずバッファープールページを含むコアファイルが書き込まれないように無効になります。 読取り専用 core_file 変数が無効になった場合は、サーバーを再起動して再度有効にする必要があります。

次のテーブルに、コアファイルが生成されるかどうか、およびコアファイルにバッファープールページが含まれるかどうかを決定する構成シナリオと MADV_DONTDUMP サポートシナリオを示します。

表 15.4 コアファイルの構成シナリオ

core_file 変数 innodb_buffer_pool_in_core_file 変数 madvise() MADV_DONTDUMP のサポート 結果
OFF (デフォルト) 結果に関連しない 結果に関連しない コアファイルは生成されません
ON ON (デフォルト) 結果に関連しない コアファイルはバッファプールページで生成されます
ON OFF はい コアファイルはバッファプールページなしで生成されます
ON OFF いいえ コアファイルが生成されず、core_file が無効になり、サーバーエラーログに警告が書き込まれます

innodb_buffer_pool_in_core_file 変数を無効にして達成されるコアファイルサイズの縮小は、バッファプールのサイズによって異なりますが、InnoDB ページサイズの影響も受けます。 ページサイズが小さいほど、同じ量のデータに必要なページが増え、ページが多いほどページメタデータが増えます。 次のテーブルに、ページサイズが異なる 1GB バッファプールで表示されるサイズ削減の例を示します。

表 15.5 バッファープールページが含まれ、除外されているコアファイルのサイズ

innodb_page_size 設定 含まれるバッファプールページ (innodb_buffer_pool_in_core_file=ON) 除外されたバッファープールページ (innodb_buffer_pool_in_core_file=OFF)
4KB 2.1GB 0.9GB
64KB 1.7GB 0.7GB


関連キーワード:  InnoDB, テーブル, 構成, file, コア, 圧縮, 変数, buffer, pool, プール