Cambiando innodb_buffer_pool_size sobre la marcha

Cambiando innodb_buffer_pool_size sobre la marcha

Me pregunto si es posible cambiarlo innodb_buffer_pool_sizesobre la marcha.

Parece que el grupo de buffer se ha sobreasignado en mi servidor y ahora se está intercambiando. Cambié este valor en el servidor esclavo, reinicié el demonio MySQL y todo se ve bien ahora; sin embargo, no puedo desconectar el servidor maestro.

No estoy seguro de poder al menos vaciar el búfer inndb para liberar algo de memoria.

# 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

Respuesta1

Me pregunto si es posible cambiar innodb_buffer_pool_size sobre la marcha.

No puedes.innodb_buffer_pool_sizeno es una variable dinámica.

No estoy seguro de poder al menos vaciar el búfer inndb para liberar algo de memoria.

Solución de problemas de uso de memoria MySQLpuede ser útil.

Respuesta2

En MySQL 5.7 ahora es posible modificar el tamaño de innodb_buffer_pool sobre la marcha de forma dinámica:

15.4.3.2 Configuración del tamaño del grupo de búfer de InnoDB

El nuevo tamaño de la piscina debe ser múltiplo de:

innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances

o utilizará el siguiente múltiplo más alto, si se establece en un número no válido.

información relacionada