Ich verwende die Percona-Version von MySQL Server v5.6 und alle paar Tage scheint MySQL abzustürzen und sich dann automatisch neu zu starten. Wie kann ich den Grund für den Absturz herausfinden? Ich habe bei anderen Leuten gesehen, dass MySQL unerwartet abstürzt und es scheint an Speicherproblemen zu liegen, aber in ihren Fällen wird dies im Fehlerprotokoll erwähnt. In meinem Fall erscheint nichts in der Protokolldatei, bis es tatsächlich neu gestartet wird.
Ich füge unten die relevante Protokolldatei mit dem letzten „erwarteten“ Fehler und dem Protokoll bei, das beim Neustart von MySQL protokolliert wird. Sie enthält verschiedene Warnungen „Unsichere Anweisung ins Binärprotokoll geschrieben“ vor dem Absturz, aber ich glaube nicht, dass sie der Grund für den Absturz sind. (Ich werde die Anweisungen in Kürze aktualisieren, damit sie nicht die ON DUPLICATE KEY
Konstruktion verwenden, um sie zu stoppen und das Protokoll nicht zu füllen. Ich sollte auch erwähnen, dass ich keine Replikation durchführe, weshalb ich sie im Moment nicht für so wichtig halte.)
Der Server ist ein 64-Bit-Centos 6.6, der auf einer virtuellen Maschine (Virtuozzo) läuft.
Hoffentlich kann mir jemand sagen, was die Ursache für den Absturz ist. Danke!
Protokolldatei unten:
19.03.2018 08:39:51 21476 [Warnung] Unsichere Anweisung, die mit Anweisungsformat in das Binärprotokoll geschrieben wurde, da BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE für eine Tabelle mit mehr als einem UNIQUE KEY ist unsichere Anweisung: INSERT INTO xxxx ON DUPLICATE KEY UPDATE xxxx 180319 08:39:52 mysqld_safe Anzahl der derzeit laufenden Prozesse: 0 180319 08:39:52 mysqld_safe mysqld neu gestartet 19.03.2018 08:39:53 0 [Warnung] TIMESTAMP mit implizitem DEFAULT-Wert ist veraltet. Bitte verwenden Sie die Serveroption --explicit_defaults_for_timestamp (weitere Einzelheiten finden Sie in der Dokumentation). 19.03.2018 08:39:53 20217 [Warnung] Die Verwendung des eindeutigen Optionspräfixes myisam-recover anstelle von myisam-recover-options ist veraltet und wird in einer zukünftigen Version entfernt. Bitte verwenden Sie stattdessen den vollständigen Namen. 19.03.2018 08:39:53 20217 [Hinweis] Plugin „FEDERATED“ ist deaktiviert. 2018-03-19 08:39:53 20217 [Anmerkung] InnoDB: Verwenden von Atomen zum Referenzieren der Anzahl von Pufferpoolseiten 2018-03-19 08:39:53 20217 [Hinweis] InnoDB: Der InnoDB-Speicherheap ist deaktiviert 2018-03-19 08:39:53 20217 [Anmerkung] InnoDB: Mutexe und rw_locks verwenden atomare Builtins von GCC 2018-03-19 08:39:53 20217 [Hinweis] InnoDB: Speicherbarriere wird nicht verwendet 2018-03-19 08:39:53 20217 [Hinweis] InnoDB: Komprimierte Tabellen verwenden zlib 1.2.3 2018-03-19 08:39:53 20217 [Hinweis] InnoDB: Verwendung von Linux nativem AIO 2018-03-19 08:39:53 20217 [Hinweis] InnoDB: Verwenden von CPU-CRC32-Anweisungen 19.03.2018 08:39:53 20217 [Hinweis] InnoDB: Pufferpool wird initialisiert, Größe = 3,0 G 2018-03-19 08:39:54 20217 [Hinweis] InnoDB: Initialisierung des Pufferpools abgeschlossen 19.03.2018 08:39:54 20217 [Hinweis] InnoDB: Das am meisten unterstützte Dateiformat ist Barracuda. 2018-03-19 08:39:54 20217 [Hinweis] InnoDB: Der Protokollscan hat den Prüfpunkt lsn 123717382274 überschritten 19.03.2018 08:39:54 20217 [Hinweis] InnoDB: Datenbank wurde nicht normal heruntergefahren! 19.03.2018 08:39:54 20217 [Hinweis] InnoDB: Wiederherstellung nach Absturz wird gestartet. 19.03.2018 08:39:54 20217 [Hinweis] InnoDB: Tablespace-Informationen werden aus den .ibd-Dateien gelesen ... 2018-03-19 08:39:54 20217 [Anmerkung] InnoDB: Wiederherstellen möglicher halbgeschriebener Datenseiten 19.03.2018 08:39:54 20217 [Anmerkung] InnoDB: aus dem Doublewrite-Puffer ... InnoDB: Wiederherstellung wird durchgeführt: Bis zur Protokollsequenznummer 123717811056 gescannt InnoDB: Transaktion 790235434 befand sich im Status „XA vorbereitet“. InnoDB: 1 Transaktion(en), die zurückgesetzt oder bereinigt werden müssen InnoDB: insgesamt 0 Zeilenoperationen zum Rückgängigmachen InnoDB: Trx-ID-Zähler ist 790235904 19.03.2018 08:39:55 20217 [Hinweis] InnoDB: Starten eines Batches zum Anwenden von Protokolldatensätzen auf die Datenbank ... InnoDB: Fortschritt in Prozent: 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 7 InnoDB: Batch anwenden abgeschlossen InnoDB: Letzte MySQL-Binlog-Dateiposition 0 697177863, Dateiname mysql-bin.000227 InnoDB: Rollback nicht festgeschriebener Transaktionen im Hintergrund starten 19.03.2018 08:39:56 20217 [Hinweis] InnoDB: 128 Rollback-Segment(e) sind aktiv. 2018-03-19 08:39:56 7f481bd03700 InnoDB: Rollback nicht vorbereiteter Transaktionen abgeschlossen 2018-03-19 08:39:56 20217 [Hinweis] InnoDB: Warte auf den Beginn der Bereinigung 2018-03-19 08:39:56 20217 [Hinweis] InnoDB: Percona XtraDB (http://www.percona.com) 5.6.22-71.0 gestartet; Protokollsequenznummer 123717811056 2018-03-19 08:39:56 20217 [Hinweis] Wiederherstellung nach einem Absturz mit /var/lib/mysql/mysql-bin 19.03.2018 08:46:36 20217 [Hinweis] Wiederherstellung nach Absturz wird gestartet … 19.03.2018 08:46:36 7f491ce677e0 InnoDB: Wiederherstellung für XA-Transaktionen wird gestartet … 2018-03-19 08:46:36 7f491ce677e0 InnoDB: Transaktion 790235434 im vorbereiteten Zustand nach der Wiederherstellung 2018-03-19 08:46:36 7f491ce677e0 InnoDB: Transaktion enthält Änderungen an 1 Zeile 2018-03-19 08:46:36 7f491ce677e0 InnoDB: 1 Transaktion im vorbereiteten Zustand nach der Wiederherstellung 2018-03-19 08:46:36 20217 [Hinweis] 1 vorbereitete Transaktion(en) in InnoDB gefunden 19.03.2018 08:46:36 20217 [Hinweis] Wiederherstellung nach Absturz abgeschlossen. 19.03.2018 08:46:36 20217 [Hinweis] RSA-Privatschlüsseldatei nicht gefunden: /var/lib/mysql//private_key.pem. Einige Authentifizierungs-Plugins funktionieren nicht. 19.03.2018 08:46:36 20217 [Hinweis] RSA-Public-Key-Datei nicht gefunden: /var/lib/mysql//public_key.pem. Einige Authentifizierungs-Plugins funktionieren nicht. 2018-03-19 08:46:36 20217 [Hinweis] Server-Hostname (Bind-Adresse): '*'; Port: 3306 19.03.2018 08:46:36 20217 [Hinweis] IPv6 ist verfügbar. 19.03.2018 08:46:36 20217 [Hinweis] – '::' wird zu '::' aufgelöst; 19.03.2018 08:46:36 20217 [Hinweis] Server-Socket erstellt auf IP: '::'. 2018-03-19 08:46:37 20217 [Hinweis] Event Scheduler: 0 Ereignisse geladen 19.03.2018 08:46:37 20217 [Hinweis] /usr/sbin/mysqld: bereit für Verbindungen. Version: „5.6.22-71.0-log“ Socket: „/var/lib/mysql/mysql.sock“ Port: 3306 Percona Server (GPL), Version 71.0, Revision 726 19.03.2018 08:46:38 20217 [Warnung] Unsichere Anweisung, die im Anweisungsformat in das Binärprotokoll geschrieben wurde, da BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE für eine Tabelle mit mehr als einem UNIQUE KEY ist unsichere Anweisung: INSERT INTO xxxx ON DUPLICATE KEY UPDATE xxxx
Bearbeiten: Gemäß der Frage von @impimp in den Kommentaren ist hier der Inhalt von/var/log/messages
18. März 04:02:22 HOSTNAME rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="474" x-info="http://www.rsyslog.com"] rsyslogd wurde HUPed 19. März 08:39:52 HOSTNAME Kernel: [103311785.405884] Nicht genügend Arbeitsspeicher in UB 650543: OOM hat Prozess 21476 (mysqld) beendet. Punktzahl 0 vm:6363484kB, rss:4024500kB, swap:45536kB 20. März 09:17:35 HOSTNAME Kernel: [103400050.711461] Nicht genügend Arbeitsspeicher in UB 650543: OOM hat Prozess 20217 (mysqld) beendet. Punktzahl 0 vm:6382720kB, rss:4066652kB, swap:0kB