2017年07月31日

MySQL5.7へのアップデートとib_buffer_poolファイル

MySQL5.7へのアップデート後、MySQLのデータディレクトリ内にib_buffer_poolという名前のファイルが作成されていました。
 
調べたところ、ib_buffer_poolというファイルを生成する機能はバージョン5.6.3から導入され(デフォルトはOFF)、5.7.7以降ではデフォルトでONになっているため、自動で生成されていたようです。

オンラインマニュアルを読んで仕様を確認しました。

●ib_buffer_poolファイルに関連するパラメータ

〇innodb_buffer_pool_filename
・5.6.3から導入
・デフォルト値:ib_buffer_pool
・innodb_buffer_pool_dump_at_shutdownまたはinnodb_buffer_pool_dump_nowで生成されるテーブルスペースIDおよびページIDのリストを保持するファイルの名前を指定する。

〇innodb_buffer_pool_dump_at_shutdown
・5.6.3から導入
・デフォルト値:(<= 5.7.6)OFF、(>= 5.7.7)ON
・次回再起動時のウォームアッププロセスの時間を短縮するために、MySQL サーバーのシャットダウン時に、InnoDBのバッファープールにキャッシュされるページを記録するかどうかを指定する。

〇innodb_buffer_pool_load_at_startup
・5.6.3から導入
・デフォルト値:(<= 5.7.6)OFF、(>= 5.7.7)ON
・起動時に、以前に保持されたときと同じページをロードすることで、InnoDBのバッファープールが自動的にウォームアップされるように指定する。

〇innodb_buffer_pool_dump_now
・5.6.3から導入
・デフォルト値:OFF
・InnoDBのバッファープールにキャッシュされるページをすぐに記録する。

〇innodb_buffer_pool_load_now
・5.6.3から導入
・デフォルト値:OFF
・InnoDB のバッファープールにキャッシュされるページをすぐに記録する。

●InnoDBバッファープール

・InnoDBのデータとインデックスをメモリーにキャッシュするためのバッファープール。

●ウォームアップとは

・起動後の一定期間、標準的なワークロードでシステムを実行することを言い、定常状態のようにバッファープールとほかのメモリー領域がキャッシュされたデータでいっぱいになる。

・このプロセスは、再起動したり新しいワークロードを課せられたりしたときに、一定時間をかけて自然に発生する。

・innodb_buffer_pool_dump_at_shutdown=ONおよびinnodb_buffer_pool_load_at_startup=ONを設定すると、シャットダウン時にバッファープールの内容をファイルに記録し、再起動後にファイルからメモリーに戻すことによって、ウォームアッププロセスを高速化できる。

●ib_buffer_poolファイルを無効にする方法

〇実行例

# mysql -v
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.19 MySQL Community Server (GPL)

mysql> show variables like 'innodb_buffer_pool_dump_at_shutdown';
+-------------------------------------+-------+
| Variable_name | Value |
+-------------------------------------+-------+
| innodb_buffer_pool_dump_at_shutdown | ON |
+-------------------------------------+-------+
1 row in set (0.02 sec)

mysql> show variables like 'innodb_buffer_pool_load_at_startup';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| innodb_buffer_pool_load_at_startup | ON |
+------------------------------------+-------+
1 row in set (0.02 sec)

# vi /etc/my.cnf

[mysqld]
innodb_buffer_pool_dump_at_shutdown=0
innodb_buffer_pool_load_at_startup=0

サーバー再起動後、ib_buffer_poolファイルには記録されなくなる。(削除した場合は再作成されない。)
posted by ほのらー at 10:01| Comment(0) | MySQL | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: