Ändern von innodb_buffer_pool_size im laufenden Betrieb

Ändern von innodb_buffer_pool_size im laufenden Betrieb

Ich frage mich, ob es möglich ist, das innodb_buffer_pool_sizeim laufenden Betrieb zu ändern.

Es sieht so aus, als ob der Pufferpool auf meinem Server überlastet ist und jetzt ausgelagert wird. Ich habe diesen Wert auf dem Slave-Server geändert, den MySQL-Daemon neu gestartet und jetzt sieht alles gut aus - ich kann den Master-Server jedoch nicht offline nehmen.

Ich bin nicht sicher, ob ich zumindest den InnDB-Puffer leeren kann, um etwas Speicher freizugeben?

# 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

Antwort1

Ich frage mich, ob es möglich ist, die innodb_buffer_pool_size im laufenden Betrieb zu ändern.

Das kannst du nicht.innodb_buffer_pool_sizeist keine dynamische Variable.

Ich bin nicht sicher, ob ich zumindest den InnDB-Puffer leeren kann, um etwas Speicher freizugeben?

Fehlerbehebung bei der MySQL-Speichernutzungkönnte nützlich sein.

Antwort2

In MySQL 5.7 ist es nun möglich, die Größe des innodb_buffer_pools dynamisch im laufenden Betrieb zu ändern:

15.4.3.2 Konfigurieren der InnoDB-Pufferpoolgröße

Die neue Poolgröße muss ein Vielfaches von: sein.

innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances

oder es wird das nächsthöhere Vielfache verwendet, wenn eine ungültige Zahl eingestellt ist.

verwandte Informationen