随时更改innodb_buffer_pool_size

我想知道是否有可能在运行中更改innodb_buffer_pool_size

它看起来像缓冲池已被分配在我的服务器上,现在正在交换。 我已经改变了从属服务器上的这个值,重新启动MySQL守护进程,现在一切都看起来很好 – 但我不能离开主服务器

我不确定是否至less可以刷新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 

我想知道是否有可能在运行中更改innodb_buffer_pool_size。

你不能。 innodb_buffer_pool_size不是一个dynamicvariables。

我不确定是否至less可以刷新inndb缓冲区来释放一些内存?

排除MySQL内存使用情况可能会有帮助。

在MySQL 5.7中,现在可以dynamic修改innodb_buffer_pool大小:

15.4.3.2configurationInnoDB缓冲池大小

新的池大小必须是以下的倍数:

 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 

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