Warum steckt meine DB-Instance von Amazon RDS for MySQL beim „Neustart“ fest?

Lesedauer: 6 Minute
0

Ich versuche meinen meine DB-Instance von Amazon Relational Database Service (Amazon RDS) for MySQL neu zu starten. Meine DB-Instance steckt jedoch im Status „Neustart“ fest oder der Neustart dauert länger als erwartet. Was ist der Grund dafür und wie löse ich das Problem?

Kurzbeschreibung

Stellen Sie vor dem Durchführen eines Neustarts sicher, dass Sie alle eingehenden oder laufenden Transaktionen in Ihrer DB-Instance beenden. Laufende Transaktionen werden gestoppt und alle nicht festgeschriebenen Transaktionen werden rückgängig gemacht.

Hinweis: Das Rollback von nicht festgeschriebenen Transaktionen kann eine teure Operation sein. Nicht festgeschriebene Transaktionen können auch lange dauern, bis Ihre Instance von Amazon RDS for MySQL wieder verfügbar wird.

Nachdem ein Neustart begonnen hat, kann der Prozess nicht abgebrochen werden und der Neustart wird fortgesetzt, bis er abgeschlossen ist. Wenn Ihr Neustart länger als erwartet dauert, untersuchen Sie die Grundursache und überlegen Sie sich die folgenden Ansätze zur Fehlerbehebung:

  • Prüfen Sie auf laufende Anfragen.
  • Prüfen Sie, ob es nicht bereinigte Transaktionen gibt.
  • Prüfen Sie die MySQL-Fehlerprotokolldatei.

Auflösung

Auf laufende Anfragen prüfen

Verwenden Sie den Befehl SHOW FULL PROCESSLIST, um zu überprüfen, ob es aktive Abfragen auf Ihrer Instance von Amazon RDS for MySQL gibt:

mysql> SHOW FULL PROCESSLIST;

Hier ist eine Beispielausgabe, die anzeigt, dass eine UPDATE-Abfrage noch läuft:

+-----+---------------+---------------------+------+---------+------+----------+-----------------------+
| Id  | User          | Host                | db   | Command | Time | State    | Info                  |
+-----+---------------+---------------------+------+---------+------+----------+-----------------------+
|   2 | rdsadmin      | localhost:30662     | NULL | Sleep   |    4 |          | NULL                  |
| 101 | admin         | 172.31.28.252:58288 | NULL | Query   |  111 | updating |UPDATE tutorials SET tu|
+-----+---------------+---------------------+------+---------+------+----------+-----------------------+

Die Ausgabe liefert Informationen über Ihre MySQL-Threads, die in Ihrer Datenbank ausgeführt werden. Wenn noch Abfragen ausgeführt werden, lassen Sie die Abfragen abschließen, bevor Sie einen Neustart durchführen.

Hinweis: Führen Sie die Abfrage SHOW FULL PROCESSLIST als Hauptbenutzer aus. Wenn Sie nicht der Hauptbenutzer sind, benötigen Sie MySQL-Server-Administratorrechte, um alle aktiven Threads auf der MySQL-Instance anzeigen zu können. Andernfalls zeigt die Ausgabe nur aktive Thread-IDs im MySQL-Konto des Benutzers an. Weitere Informationen finden Sie unter SHOW PROCESSLIST-Anweisung und MySQL-Serververwaltung auf der MySQL-Website.

Prüfen Sie, ob es nicht bereinigte Transaktionen gibt

Die MySQL-InnoDB-Engine verwendet die Multiversion-Parallelitätensteuerung (Multiversion Concurrency Control, MVCC), die eine Liste alter Versionen geänderter Zeilen während einer Transaktion verwaltet. Wenn eine Transaktion rückgängig gemacht werden muss, kann InnoDB während dieses Vorgangs alle Vorgänge ausführen, die zum Rückgängigmachen genutzt werden. Alte Versionen von Zeilen werden innerhalb des Bereichs zum Rückgängigmachen erfasst. Diese alten Versionen werden gelöscht, wenn sie während einer Transaktion nicht mehr aufgerufen werden. Wenn erfasste Änderungen nicht bereinigt werden, weil eine Transaktion immer noch auf sie verweist, kann die Länge der Verlaufsliste größer werden. Weitere Informationen finden Sie unter InnoDB-Multiversioning auf der MySQL-Website.

Nicht bereinigte Transaktionen werden als Längenwert für die Verlaufsliste dargestellt. Dieser Wert ist unter „TRANSACTIONS“ in der Befehlsausgabe SHOW ENGINE INNODB STATUS zu finden. Beachten Sie, dass die Länge der Verlaufsliste normalerweise einen niedrigen Wert hat, obwohl eine schreibintensive Workload oder lang andauernde Transaktionen dazu führen können, dass der Wert ansteigt. Weitere Informationen zum Längenwert der Verlaufsliste finden Sie unter Konfiguration löschen auf der MySQL-Website.

Verwenden Sie den Befehl SHOW ENGINE INNODB STATUS, um nach nicht bereinigten Transaktionen innerhalb der Länge der Verlaufsliste zu suchen. Mit der Ausgabe dieses Befehls können Sie auch die Größe der Länge der Verlaufsliste und aller laufenden Transaktionen anzeigen, die im Abschnitt „TRANSAKTIONEN“ aufgeführt sind. Weitere Informationen zur Überprüfung der aufgelisteten Transaktionen finden Sie unter InnoDB-Standardüberwachung und Überwachungsausgabe sperren auf der MySQL-Website.

Beispiel:

------------
TRANSACTIONS
------------
Trx id counter 105746959
Purge done for trx's n:o < 105746958 undo n:o < 0 state: running but idle
History list length 32
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 328605240396520, not started
0 lock struct(s), heap size 1136, 0 row lock(s)
---TRANSACTION 328605240395600, not started
0 lock struct(s), heap size 1136, 0 row lock(s)

Hinweis: Wenn die Länge der Verlaufsliste einen hohen Wert hat und aktive Transaktionen vorhanden sind, ist ein Neustart nicht empfehlenswert.

Weitere Informationen finden Sie unter SHOW ENGINE INNODB STATUS auf der MySQL-Website.

Überprüfen Sie die MySQL-Fehlerprotokolldatei

In Amazon RDS ist die MySQL-Fehlerprotokolldatei standardmäßig aktiviert. Wenn Sie den Verdacht haben, dass es zu lange dauert, bis Ihre RDS-Instance wieder verfügbar wird, überprüfen Sie den Inhalt Ihrer MySQL-Fehlerprotokolldatei. MySQL schreibt in die Fehlerprotokolldatei, wenn sie gestartet, oder heruntergefahren wird oder wenn Fehler auftreten.

Beispielsweise muss InnoDB möglicherweise alle nicht festgeschriebenen Transaktionen im Rahmen des Wiederherstellungsprozesses nach einem Systemausfall von InnoDB rückgängig machen. Wenn nicht festgeschriebene Transaktionen rückgängig gemacht werden, dokumentiert das MySQL-Fehlerprotokoll dieses Ereignis. Weitere Informationen finden Sie unterWiederherstellung nach einem Systemausfall von InnoDB auf der MySQL-Website.

Zusätzliche Fehlerbehebung

Hinweis: Wenn Sie sich für eine zeitpunktbezogene Wiederherstellung (PITR) oder eine Wiederherstellung aus einem Snapshot entscheiden, ist Ihre neue Amazon-RDS-Instance möglicherweise nicht sofort verfügbar. Weitere Informationen finden Sie in den folgenden Artikeln:

Wenn Ihre DB-Instance von Amazon RDS for MySQL eine Weile neu gestartet wird, versuchen Sie es mit diesen zusätzlichen Tipps zur Fehlerbehebung:

  • Wenn für Ihre DB-Instance automatische Backups aktiviert sind, führen Sie eine PITR durch, um von einem bestimmten Zeitpunkt auf eine neue Amazon-RDS-Instance wiederherzustellen. Sie können bis zu jedem Zeitpunkt innerhalb Ihres Aufbewahrungszeitraums für Backups wiederherstellen.
    Hinweis: Standardmäßig sind wiederhergestellte DB-Instances dem standardmäßigen DB-Parameter und den Optionsgruppen zugeordnet. Sie können jedoch eine benutzerdefinierte Parametergruppe und Optionsgruppe verwenden, indem Sie sie während einer Wiederherstellung angeben.
  • Stellen Sie Ihre DB-Instance vom neuesten DB-Snapshot wieder her, indem Sie eine neue DB-Instance erstellen. Sie können die wiederhergestellte DB-Instance verwenden, sobald ihr Status verfügbar ist.
  • Wenn Ihre DB-Instance über ein Lesereplikat verfügt, stufen Sie das Lesereplikat hoch, sodass es zu einer eigenständigen DB-Instance wird. Wenn Sie ein Lesereplikat hochstufen, wird die DB-Instance automatisch neu gestartet, bevor sie verfügbar wird.

Es ist auch eine bewährte Methode, Ihre Datenbankaktivitäten regelmäßig zu überwachen. Sie können Ihre Amazon RDS for MySQL DB-Instance mit den folgenden Tools überwachen:

  • Amazon CloudWatch: Mit Amazon CloudWatch können Sie jede laufende Datenbank-Workload überwachen. Wenn Sie hohe Werte bei DB-Verbindungen, CPU-Auslastung oder Schreib-/Lese-IOPS beobachten, kann es sein, dass es in Ihrer DB-Instance laufende Aktivitäten gibt.
  • Erweiterte Überwachung: Die erweiterte Überwachung erfordert die Berechtigung, Betriebssystemmetrik-Informationen an CloudWatch Logs zu senden. Sie können Berechtigungen zur erweiterten Überwachung mithilfe einer AWS Identity and Access Management (IAM)-Rolle erteilen. Bevor Sie die erweiterte Überwachung aktivieren, müssen Sie zunächst eine IAM-Rolle erstellen.
  • Performance Insights: Performance Schema ist ein optionales Leistungs-Tool, das von Amazon RDS for MySQL (oder MariaDB) verwendet wird. Wenn Sie Performance Insights aktivieren oder deaktivieren, müssen Sie Ihre DB-Instance nicht neu starten. Sie werden auch keine Ausfallzeiten oder ein Failover erleben.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren