我想知道是否可以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
或 如果設定為無效數字,則將使用下一個最大倍數。