我想知道是否有可能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
如果设置为无效数字,则将使用下一个最高倍数。