动态更改 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

如果设置为无效数字,则将使用下一个最高倍数。

相关内容