Назад | Перейти на главную страницу

Изменение 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

В MySQL 5.7 теперь можно динамически изменять размер innodb_buffer_pool на лету:

15.4.3.2 Настройка размера пула буферов InnoDB

Новый размер пула должен быть кратен:

innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances

или будет использовать следующее по величине кратное, если установлено недопустимое число.

Мне интересно, можно ли изменить innodb_buffer_pool_size на лету.

Вы не можете. innodb_buffer_pool_size не является динамической переменной.

Я не уверен, смогу ли я хотя бы очистить буфер inndb, чтобы освободить немного памяти?

Устранение неполадок с использованием памяти MySQL может быть полезно.