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 のサイズを動的に変更できるようになりました。
新しいプール サイズは次の倍数である必要があります:
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
または、無効な数値に設定されている場合、次に高い倍数が使用されます。