InnoDB: Fatal error: cannot initialize AIO sub-system

SabineW

Benutzer
Beiträge
13
Hallo an Alle!
Auf meinem V-Server (gehostet bei Strato, Linux openSUSE 12.2 mit Plesk 11.5) läuft (leider gerade nicht) ein mysql-Server 5.5.
Vor ein paar Tagen ist der Server stehen geblieben und lässt sich nicht mehr starten. Dazu finde ich folgende Einträge im Log:
---
140425 1:59:29 InnoDB: Using Linux native AIO
140425 1:59:29 InnoDB: Warning: io_setup() failed with EAGAIN. Will make 5 attempts before giving up.
InnoDB: Warning: io_setup() attempt 1 failed.
InnoDB: Warning: io_setup() attempt 2 failed.
InnoDB: Warning: io_setup() attempt 3 failed.
InnoDB: Warning: io_setup() attempt 4 failed.
InnoDB: Warning: io_setup() attempt 5 failed.
140425 1:59:32 InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts.
InnoDB: You can disable Linux Native AIO by setting innodb_use_native_aio = 0 in my.cnf
140425 1:59:32 InnoDB: Fatal error: cannot initialize AIO sub-system
140425 1:59:32 [ERROR] Plugin 'InnoDB' init function returned error.
140425 1:59:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140425 1:59:32 [ERROR] Unknown/unsupported storage engine: InnoDB
140425 1:59:32 [ERROR] Aborting
------
In vielen Threads gibt es einen Hinweis fs.aio-max-nr zu erhöhen. Doch leider hat das nicht funktioniert. Dazu habe ich im Plesk-Forum ein Thread eröffnet ( http://forum.parallels.com/showthread.php?301515-io-error-in-mysql-log). Doch leider habe ich dort keine Antwort erhalten.
Zwischenzeitlich bin ich etwas schlauer. Es sieht wohl so aus, das Strato es nicht zulässt, fs.aio-max-nr zu erhöhen. Dann habe ich nach anderen Möglichkeiten gesucht und das hier gefunden: http://bugs.mysql.com/bug.php?id=61575 (Kann man fs.aio-max-nr nicht erhöhen, soll man innodb_read_io_threads und innodb_write_io_threads reduzieren.) Das habe ich dann auch versucht, aber leider will mein Server einfach nicht mehr starten. Die Einträge im Log ändern sich nicht. Meine my.cnf habe ich anhand dieser Seite: http://www.rootforum.org/forum/viewtopic.php?f=103&t=36343 konfiguriert und die Pfade angepasst. Den dort vorgeschlagenen Wert von 4G für innodb_buffer_pool_size hat mein Server angemeckert (weil 32-bit) und ich habe 2G eingetragen.
Irgendwie drehe ich mich im Kreis und komme nicht weiter. Wäre prima, wenn mir jemand einen Tipp geben könnte, wie ich meinen Server wieder zum Laufen bringe.
(Dieses Thema habe ich auch in einem anderen Forum eingestellt, leider ist er dort gleich wieder - ohne Kommentar - geschlossen worden. Was ich falsch gemacht habe, weiss ich leider nicht. Ich würde mich riesig freuen, wenn mir hier jemand helfen könnte, oder wenn mir vielleicht jemand sagen könnte, was ich falsch mache.)
Danke und Grüße
Sabine
 
Werbung:
Hallo akretschmer (hallo auch an alle anderen),
vielen Dank für Deine schnelle Antwort. Ich habe MySQL gar nicht drauf gemacht. Das kam mit der Plesk-Installation. Ob ich das vielleicht ändern kann?
Danke für den Link. Das hatte ich leider vergessen zu erwähnen: Bei den unendlichen Versuchen, die ich ausprobiert habe, habe ich auch das versucht. Der Datenbankserver fuhr auch wieder hoch, ich spielte meinen letzten Dump ein und versuchte auf die Datenbanken und deren Tabelle zuzugreifen, bekam aber immer einen Fehler, das die Tabellen nicht lesbar sind (so oder so ähnlich, den genauen Fehlermeldungstext weiss ich jetzt nicht mehr). Ich habe dann auch mehrfach versucht, die Datenbank zu reparieren, ging aber alles irgendwie net. Irgendwo hatte ich gelesen, das das mit dem innodb_use_native_aio nur bei sehr kleinen Datenbanken geht (leider ohne Definition von 'sehr klein'). Bis jetzt war ich reiner Datenbank-Anwender und hatte mit solchen Problemen noch nie etwas zu tun.
 
Danke für den Link. Das hatte ich leider vergessen zu erwähnen: Bei den unendlichen Versuchen, die ich ausprobiert habe, habe ich auch das versucht. Der Datenbankserver fuhr auch wieder hoch,

Gut. Dann ist das Problem ja gelöst.


ich spielte meinen letzten Dump ein und versuchte auf die Datenbanken und deren Tabelle zuzugreifen, bekam aber immer einen Fehler, das die Tabellen nicht lesbar sind (so oder so ähnlich, den genauen Fehlermeldungstext weiss ich jetzt nicht mehr).

Das ist dann das nächste Problem. Das ist aber ohne Fehlermeldung erst einmal eher nicht lösbar.
 
Ok, wenn Du da eine Möglichkeit siehst...
Gib mir eine Stunde, dann kann ich Dir mehr sagen.
Danke schon mal vorab für Deine Hilfe.
Grüße
Sabine
 
mysqld läuft wieder. Ich habe die ursprüngliche my.cnf verwendet und um den Parameter 'innodb_use_native_aio = 0' erweitert. Dann habe ich ibdata* und ib_logfile gelöst und mysqld gestartet. Nachdem der Server hochgefahren ist (Hurra!), habe ich den letzten Dump zurückgespielt. Beim Starten des Servers waren folgenden Einträge im Log zu sehen:
---
[Warning] option 'innodb-buffer-pool-size': signed value 2097152 adjusted to 5242880
[Warning] option 'innodb-additional-mem-pool-size': signed value 512000 adjusted to 524288
InnoDB: The InnoDB memory heap is disabled
----
Ob diese Meldungen kritisch sind, weiss ich leider nicht. Nach dme Zurückspielen des Dumps habe ich das Plesk-Script 'bootstrapper.sh repair' laufen lassen, um zu sehen, ob alles ok ist. Hier bekomme ich Fehlermeldunge (z.B.
Table 'apsc.meta_info' doesn't exist
oder
ERROR while trying to execute SQL query, the query was: REPLACE INTO meta_info (param, value) VALUES ('db_version', '011005030')
Check the error reason, fix and try again
Wenn ich dann mysql öffne und Tabellen abfrage (select * from), kommt die Meldung 'Table <Tabelle> doesn't exist'. Mit 'show tables' sehe ich die Tabellen aber. Also da sind die, aber wohl defekt.
Liegt das jetzt an dem Parameter 'innodb_use_native_aio = 0' oder habe ich ein anderes (zusätzliches) Problem?
Grüße
Sabine
 
Wenn ich dann mysql öffne und Tabellen abfrage (select * from), kommt die Meldung 'Table <Tabelle> doesn't exist'. Mit 'show tables' sehe ich die Tabellen aber. Also da sind die, aber wohl defekt.
Liegt das jetzt an dem Parameter 'innodb_use_native_aio = 0' oder habe ich ein anderes (zusätzliches) Problem?
Grüße
Sabine

Kann ich Dir, da bin ich ehrlich, nicht sagen. Nutze MySQL nicht, hab nur den täglichen Ärger damit (@work)
 
bei MySQL?

640px-01-how-about-no-bear.jpg
 
---
[Warning] option 'innodb-buffer-pool-size': signed value 2097152 adjusted to 5242880
[Warning] option 'innodb-additional-mem-pool-size': signed value 512000 adjusted to 524288
InnoDB: The InnoDB memory heap is disabled
----

Mir erscheinen die Werte, insbesondere Innodb-buffer-pool-size, deutlich zu klein. Für einen ded. mySQL-Server sagt man bis zu 80% des RAM's dafür, bei Deinen Werten scheint die Kiste ja also deutlich unter 10MB RAM zu haben. Auch wenn das ein 'normaler' Server ist wo auch noch der Indianer sein Wigwam aufstellen will ist 2 oder 5 MB dafür sehr wahrscheinlich vieeeeeel zu klein.

Was sagt 'show engines', läuft InnoDB?

Das "InnoDB: The InnoDB memory heap is disabled" sollte auch nicht kommen - könnte eine direkte Folge der falschen Werte sein.
 
Hallo akretschmer, hallo ukulele,
bin jetzt schon mal einen Schritt weiter. Das so viele Tabellen nicht existierten, lag wohl daran, das nicht alles in einem dump gespeichert wurde. Beim Durchsuchen der Plesk Knowledgebase habe ich einen Hinweis auf weitere dumps gefunden. Jetzt kann ich mich zumindest schon mal wieder auf der Plesk-Administrationsseite anmelden. Aber die Fehlermeldungen möchte ich schon gerne noch weghaben.
An der my.cnf habe ich nichts angepasst. Die war so drin...
Hier ist die Abfrage der 'show engines' (als Anhang).
Ich habe 6 GB Ram zur Verfügung. Kann ich die Innodb-buffer-pool-size auf 1 oder 2 GB einstellen?
Hab hier was dazu gefunden: http://stackoverflow.com/questions/5174396/innodb-performance-tweaks
Kann man das so verwenden?

Ich bin Euch so dankbar für Eure Hilfe
Grüße
Sabine
 

Anhänge

  • upload_2014-4-29_21-33-32.png
    upload_2014-4-29_21-33-32.png
    9,7 KB · Aufrufe: 2
Werbung:
Hallo akretschmer, hallo ukulele,
bin jetzt schon mal einen Schritt weiter. Das so viele Tabellen nicht existierten, lag wohl daran, das nicht alles in einem dump gespeichert wurde.

Wo kommt der Dump her?

Hier ist die Abfrage der 'show engines' (als Anhang).

Paßt, InnoDB ist da.

Ich habe 6 GB Ram zur Verfügung. Kann ich die Innodb-buffer-pool-size auf 1 oder 2 GB einstellen?
Im Idealfall passen alle InnoDB-Tabellen da rein. Ob Du 1 oder 2 GB brauchst, weiß ich nicht. Vermutlich reichen schon 128 oder 256 oder 512MB aus. Nur 2 oder 5 MB erscheinen wir zu wenig.


Denk schon. Bin aber wirklich kein MySQL-Experte. Mein Wissen zu MySQL reicht aber aus, um zu wissen, was ich davon halten soll: Abstand.

Ich bin Euch so dankbar für Eure Hilfe
Grüße
Sabine

Dann klick doch mal auf 'Gefällt mir'. Oder, um mal einen auf Macho zu machen: send Pix!
 
Zurück
Oben