InnoDB: Fehler: Protokolldatei ./ib_logfile0 ist unterschiedlich groß

106

Ich habe gerade die folgenden Zeilen in /etc/mysql/my.cnf hinzugefügt, nachdem ich eine Datenbank für die 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 wird der Fehler "FEHLER 2013 (HY000) in Zeile 2: Verbindung zum MySQL-Server während der Abfrage verloren" ausgelöst, wenn mysqld neu gestartet wird. 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 startete MySQL erfolgreich neu.

Ich frage mich, was die "5242880 Bytes der Protokolldatei" in MySQL-Fehler angezeigt? Es ist die erste Datenbank in der InnoDB-Engine auf diesem Server. Wann und wo wird diese Protokolldatei erstellt? Wie kann ich in diesem Fall die Direktive 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. Im Fehlerprotokoll wird nun Folgendes angezeigt.

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, nachdem sowohl ib_logfile0 als auch ib_logfile1 in / var / lib / mysql gelöscht wurden

Jack
quelle

Antworten:

121

InnoDB ist wahnsinnig wählerisch in Bezug auf die Konfiguration. Wenn etwas nicht stimmt, gibt es einfach auf und geht nach Hause. So ändern Sie die Größe der Protokolldatei 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. Nehmen Sie die Konfigurationsänderung an der Größe der Protokolldatei vor.
  5. Löschen Sie beide Protokolldateien.
  6. Starten Sie MySQL. Es wird sich über das Fehlen von Protokolldateien beschweren, aber es wird sie erstellen und alles wird gut.
womble
quelle
1
Hallo, danke für deine Antwort, ich habe deine Methode ausprobiert, bin aber trotzdem gescheitert.
Jack
44
Das Löschen von ib_logfile0 und ib_logfile1 löste das Problem für mich.
Temnovit
1
Und für mich. Vielen Dank, wir haben unser Wiki wieder!
Stephen Kennedy
1
Da ich eine neu installierte Datenbank verlagere, überspringe ich Schritt 1-4 und beginne mit 5 - und es funktioniert :)
Limbo Peng
Dank @Temnovit hat das Löschen dieser 2 Dateien auch den Trick für mich getan.
Bashan