Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

InnoDB: Fatal error: cannot initialize AIO sub-system

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von SabineW, 29 April 2014.

  1. SabineW

    SabineW Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Du nutzt MySQL ;-)

    http://help.directadmin.com/item.php?id=529

    Hilft das?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Also insbesondere:

    Code:
    then the solution would be to add:
    innodb_use_native_aio = 0
    
    to the [mysqld] section of your /etc/my.cnf file.
     
    SabineW und Walter gefällt das.
  4. SabineW

    SabineW Benutzer

    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.
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Gut. Dann ist das Problem ja gelöst.


    Das ist dann das nächste Problem. Das ist aber ohne Fehlermeldung erst einmal eher nicht lösbar.
     
    SabineW gefällt das.
  6. SabineW

    SabineW Benutzer

    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
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Ja klar, PostgreSQL nutzen ;-)

    Aber okay, zeig erst mal die Fehlermeldung.
     
    SabineW gefällt das.
  8. SabineW

    SabineW Benutzer

    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
     
  9. akretschmer

    akretschmer Datenbank-Guru

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

    SabineW Benutzer

    Hallo akreschmer,
    danke für Deine Antwort. Vielleicht weiss ja wer anders weiter?
    Grüße
    Sabine
     
  11. ukulele

    ukulele Datenbank-Guru

    bei MySQL?

    [​IMG]
     
  12. akretschmer

    akretschmer Datenbank-Guru

    Nun ja, das Problem ist ja, daß es leider viele Dinge gibt, die von MyZettelkasten (mit SQL-ähnlicher Schnittstelle) abhängig sind.
     
  13. akretschmer

    akretschmer Datenbank-Guru

    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.
     
    SabineW gefällt das.
  14. SabineW

    SabineW Benutzer

    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:

  15. akretschmer

    akretschmer Datenbank-Guru

    Wo kommt der Dump her?

    Paßt, InnoDB ist da.

    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.

    Dann klick doch mal auf 'Gefällt mir'. Oder, um mal einen auf Macho zu machen: send Pix!
     
    SabineW gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden