Frage InnoDB: Fehler: Protokolldatei ./ib_logfile0 ist von unterschiedlicher Größe


Ich habe gerade die folgenden Zeilen in /etc/mysql/my.cnf hinzugefügt, nachdem ich eine Datenbank zur Verwendung der InnoDB-Engine konvertiert habe.

innodb_buffer_pool_size = 2560M
innodb_log_file_size    = 256M
innodb_log_buffer_size  = 8M
innodb_flush_log_at_trx_commit  = 2
innodb_thread_concurrency   = 16
innodb_flush_method = O_DIRECT

Aber es "ERROR 2013 (HY000) in Zeile 2: Verbindung zum MySQL-Server während der Abfrage verloren" Fehler beim Neustart von mysqld. Und mysql Fehlerprotokoll zeigt Folgendes

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting

Also habe ich diese Zeile auskommentiert

# innodb_log_file_size  = 256M

Und es hat mysql erfolgreich neu gestartet.

Ich frage mich, was ist die "5242880 Bytes der Log-Datei" in mysql Fehler gezeigt? Es ist die erste Datenbank der InnoDB-Engine auf diesem Server. Wann und wo wird diese Protokolldatei erstellt? Wie kann ich in diesem Fall die Anweisung innodb_log_file_size in my.cnf aktivieren?

BEARBEITEN

Ich habe versucht, / var / lib / mysql / ib_logfile0 zu löschen und mysqld neu zu starten, aber es ist immer noch fehlgeschlagen. Es zeigt nun folgendes im Fehlerprotokoll.

100118 21:27:11  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!

Auflösung

Es funktioniert jetzt nach dem Löschen von ib_logfile0 und ib_logfile1 in / var / lib / mysql


101
2018-01-19 03:02


Ursprung




Antworten:


InnoDB ist wahnsinnig wählerisch wegen seiner Konfiguration; wenn etwas nicht stimmt, wird es einfach aufgeben und nach Hause gehen. So ändern Sie die Protokolldateigröße ohne Datenverlust:

  1. Setzen Sie alle Konfigurationsänderungen zurück, die Sie an der Größe der Protokolldatei vorgenommen haben, und starten Sie MySQL erneut.
  2. In Ihrem laufenden MySQL: SET GLOBAL innodb_fast_shutdown= 0;
  3. Stoppen Sie MySQL
  4. Ändern Sie die Konfiguration in die Protokolldateigröße.
  5. Löschen Sie beide Protokolldateien.
  6. Starten Sie MySQL. Es wird sich beschweren über den Mangel an Log-Dateien, aber es wird sie erstellen und alles wird gut.

114
2018-01-19 03:06



Hallo, danke für deine Antwort, ich habe deine Methode ausprobiert aber trotzdem gescheitert. - jack
Das Löschen von ib_logfile0 und ib_logfile1 löste das Problem für mich. - Temnovit
Und für mich. Vielen Dank, wir haben unser Wiki zurück! - Stephen Kennedy
Da ich eine neu installierte db verlagere, überspringe ich Schritt 1-4 und beginne mit 5 - und es funktioniert :) - Limbo Peng
Danke @Temnovit das Löschen dieser 2 Dateien hat auch den Trick für mich gemacht. - bashan