動態變更 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

或 如果設定為無效數字,則將使用下一個最大倍數。

相關內容