Ich verfolge diese Lösung hier /programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 und habe versucht, meine innodb_buffer_pool_size
auf 4G und später 1G (auch 1024M) in zu erhöhen Zusätzlich zur Größe der Protokolldatei, aber MySQL startet nicht mit diesen Werten. Wenn ich es auf 512M zurücksetze, fängt mysql gut an.
Wie kann ich das lösen? Mein Server hat 16 GB und laut Webmin sysinfo:
Real memory 15.62 GB total, 3.13 GB used
Inzwischen habe ich auch das Fehlerprotokoll gefunden:
120529 10:29:32 mysqld_safe mysqld aus der pid-datei /var/run/mysqld/mysqld.pid wurde beendet
120529 10:29:33 mysqld_safe Startet den mysqld-Daemon mit Datenbanken aus / var / lib / mysql
120529 10:29:33 [Hinweis] Das Plugin 'FEDERATED' ist deaktiviert.
120529 10:29:33 InnoDB: Der InnoDB-Speicherheap ist deaktiviert
120529 10:29:33 InnoDB: Mutexe und rw_locks verwenden GCC-Atom-Builtins
120529 10:29:33 InnoDB: Komprimierte Tabellen verwenden zlib 1.2.3
120529 10:29:33 InnoDB: Linux native AIO verwenden
120529 10:29:33 InnoDB: Pufferpool wird initialisiert, Größe = 1,0 GB
120529 10:29:33 InnoDB: Initialisierung des Pufferpools abgeschlossen
InnoDB: Fehler: Protokolldatei ./ib_logfile0 ist unterschiedlich groß. 0 134217728 Bytes
InnoDB: als in der .cnf-Datei angegeben 0 268435456 Bytes!
Antworten:
Die beiden Antworten von @RickJames und @drogart sind im Wesentlichen die Mittel. (Jeweils +1).
Aus dem angezeigten Fehlerprotokoll geht hervor, dass in den letzten beiden Zeilen Folgendes steht:
Zu diesem Zeitpunkt war es offensichtlich, dass Sie innodb_log_file_size auf 256 MB (268435456) festgelegt haben,
my.cnf
während die InnoDB-Transaktionsprotokolle (ib_logfile0
,ib_logfile1
) jeweils 128 MB (134217728 ) betrugen. Wenn Sie auf den Link zu meiner StackOverflow-Antwort in Ihrer Frage zurückblicken , mussten Sie Folgendes tun:Schritt 01) Fügen Sie dies hinzu zu
my.cnf
:Schritt 02) Führen Sie diesen Befehl im Betriebssystem aus
Führen Sie
tail -f
das Fehlerprotokoll aus, um sicherzugehen, was gerade passiert . Sie erhalten eine Meldung, die Sie darüber informiert, wann die einzelnen innodb-Protokolldateien erstellt werden.quelle
service mysqld stop
.Aufgrund des Fehlers im Protokoll schätze ich, dass Sie dies getan haben:
Wenn Sie die Größe der Protokolldatei ändern, müssen Sie die alten Protokolldateien entfernen. Innodb wird nicht erfolgreich gestartet, wenn die vorhandenen Dateien nicht der in der Konfigurationsdatei angegebenen Größe entsprechen. Wenn Sie sie an einen anderen Ort verschieben, erstellt innodb beim Start neue Transaktionsprotokolldateien mit der richtigen Größe.
Ich würde empfehlen, die alten Dateien in ein anderes Verzeichnis zu verschieben, anstatt sie nur zu löschen, bis der Server mit neuen Protokolldateien läuft und alles in Ordnung aussieht.
quelle
Der buffer_pool sollte auf ungefähr 70% des verfügbaren RAM eingestellt sein, wenn Sie nur InnoDB ausführen .
Die Protokollgröße spielt keine Rolle. Das Optimum ist, es so einzustellen, dass (Uptime * innodb_log_file_size / Innodb_os_log_written) ungefähr 3600 (1 Stunde) sind.
Um die Protokollgröße zu ändern, muss man
quelle
Möglicherweise liegt auch ein Problem bei Ihrem Wert für die Pufferpoolgröße vor . wie es in meinem Fall passiert ist ...
Beim Erhöhen oder Verringern
innodb_buffer_pool_size
wird die Operation in Abschnitten ausgeführt. Die Blockgröße wird durch dieinnodb_buffer_pool_chunk_size
Konfigurationsoption definiert , die standardmäßig 128 MB hat. Weitere Informationen finden Sie unter Konfigurieren der Blockgröße des InnoDB-Pufferpools .Die Pufferpoolgröße muss immer gleich oder ein Vielfaches von sein
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
. Wenn Sieinnodb_buffer_pool_size
einen Wert konfigurieren , der nicht gleich oder ein Vielfaches von istinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
, wird die Pufferpoolgröße automatisch an einen Wert angepasst, der gleich oder ein Vielfaches voninnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
der angegebenen Pufferpoolgröße ist.In diesem Beispiel
innodb_buffer_pool_size
ist 8G undinnodb_buffer_pool_instances
16 festgelegt.innodb_buffer_pool_chunk_size
Dies ist der Standardwert 128M.8G ist ein gültiger
innodb_buffer_pool_size
Wert, da 8G ein Vielfaches voninnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
2G ist.quelle