innodb_buffer_pool_size をオンザフライで変更する

innodb_buffer_pool_size をオンザフライで変更する

innodb_buffer_pool_sizeオンザフライで変更できるかどうか疑問に思っています。

私のサーバーではバッファプールが過剰に割り当てられ、スワップが発生しているようです。スレーブサーバーでこの値を変更し、MySQLデーモンを再起動しましたが、すべて正常に見えます。ただし、マスターサーバーをオフラインにすることはできません。

少なくとも inndb バッファをフラッシュしてメモリを解放できるかどうかはわかりません。

# ps aux --sort -vsz | head -n2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql     2064 14.6 93.8 17369060 15328044 ?   Sl   Jul22 7096:48 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysql/mysql-error.log --pid-file=/var/lib/mysql/mysql.pid --socket=/var/lib/mysql/mysql.sock --port=3306

# free -m
                 total       used       free     shared    buffers     cached
    Mem:         15949      15786        163          0          4        104
    -/+ buffers/cache:      15677        272
Swap:         4095        346       3749

答え1

innodb_buffer_pool_size をその場で変更できるかどうか疑問に思っています。

あなたはできません。innodb_buffer_pool_size動的変数ではありません。

少なくとも inndb バッファをフラッシュしてメモリを解放できるかどうかはわかりません。

MySQL メモリ使用量のトラブルシューティング役に立つかもしれません。

答え2

MySQL 5.7 では、innodb_buffer_pool のサイズを動的に変更できるようになりました。

15.4.3.2 InnoDBバッファプールサイズの設定

新しいプール サイズは次の倍数である必要があります:

innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances

または、無効な数値に設定されている場合、次に高い倍数が使用されます。

関連情報