innodb_buffer_pool_sizeをオンラインで変更しようとしてつまずいた話

posted in: MySQL | 0

こんにちは、モリモトです。
メンテなしでinnoDBバッファプールを変更できる可能性!?と期待してどん底に突き落とされた話をします

■MySQL5.7の新機能

MySQL5.7で、InnoDBバッファープールのオンライン変更ができるようになったらしい。
MySQL5.6までは、バッファープールのサイズ変更には再起動だったのでエッ・・・・凄い!!!!ってなりました。
なぜならバッファープールのサイズ頻繁にチューニングするのに、その度に調整して再起動してを繰り返しててめんどくせーってなってたから。

■ウキウキで試してみる

方法は通常の設定変更と変わないようで以下でセットできる模様。

モリモトの検証環境は低スペックなので細かく設定させていただきます….ということで

ヨシ
確認してみます。

SET GLOBALしたのにSETされてねーじゃん!!!

驚きすぎてBookOffのテンションで心で叫びました。
インターネットで調べたら他の方はできてるのに・・なぜわたしだけ?

そういえばwarningがでてました。中身をみてみよう。

Query OK, 0 rows affected, 1 warning (0.21 sec)

これね。
原因を究明すべく確認します。

いや、知らんけど・・・・・・・

うん、わかりません。なに?これは
chunk size未満に変更することはできません?
うん

なに?これは・・・・・・・・

インフラ初心者のモリモトに厳しいwarningです。

■chunk sizeとは

「チャンクサイズ」は、データの読み書きを行う単位のことらしいです。
チャンクサイズ(innodb_buffer_pool_chunk_size )とインスタンスの数(innodb_buffer_pool_instances)で増減するらしい
ここまで書いてよくわかっていません

(間)

いろいろ調べて公式ドキュメントみたら一発だったのでリンクをはります。
https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-resize.html
モリモトなりの解釈ですが、

結論から言うとinnodb_buffer_pool_chunk_sizeのサイズが128である限り
innodb_buffer_pool_sizeは128Mとか256Mとか384Mとか128Mの倍数でしか設定できない!!!

細かく設定するにはこのinnodb_buffer_pool_chunk_sizeを変更するしかないようでこれを反映するには再起動が必要・・・・・・・・

■諦めて再起動しました

気軽に再起動していい段階のときにチャンクサイズを変更しとかないとなと思いました。完

LINEで送る
Pocket