Ich frage mich, ob es möglich ist, das innodb_buffer_pool_size
im 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_size
ist 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.