Beim Herunterfahren des MySQL-Servers können, abhängig von der Art des Herunterfahrens, unterschiedliche Probleme auftreten. Die folgenden Schritte können dazu beitragen, das Auftreten von Problemen zu reduzieren. 1. Beenden Sie das KopierenUnter bestimmten Umständen versucht der Slave-Knoten möglicherweise, von der falschen Position aus zu starten. Um dieses Risiko zu verringern, stoppen Sie zuerst den E/A-Thread, damit keine neuen Ereignisinformationen empfangen werden. mysql> Slave-IO_Thread stoppen; Nachdem der SQL-Thread alle Ereignisse angewendet hat, wird auch der SQL-Thread gestoppt. mysql> Slave-Status anzeigen\G mysql> Slave-SQL_Thread stoppen; Auf diese Weise können sich der E/A-Thread und der SQL-Thread an einer konsistenten Position befinden, das Relay-Protokoll enthält nur ausgeführte Ereignisse und die Positionsinformationen im relay_log_info_repository sind auch die neuesten. Stellen Sie bei Slaves mit aktivierter Multithread-Replikation sicher, dass die Lücken gefüllt sind, bevor Sie die Replikation beenden. mysql> Slave stoppen; mysql> starte Slave bis sql_after_mts_gaps; #Lücke im Relay-Protokoll anwenden mysql> show slave status\G #Stellen Sie sicher, dass sql_thread vor dem Ausführen des Befehls gestoppt wurde. mysql> Slave stoppen; 2. Commit, Rollback oder Kill von Transaktionen mit langer LaufzeitIn einer Minute kann viel passieren und beim Herunterfahren muss InnoDB nicht festgeschriebene Transaktionen zurücksetzen. Das Zurücksetzen von Transaktionen ist sehr kostspielig und kann lange dauern. Da jedes Zurücksetzen einer Transaktion zu einem Datenverlust führen kann, sind beim Schließen im Idealfall keine Transaktionen offen. Wenn die Lese-/Schreibdatenbank geschlossen ist, sollten Schreibvorgänge im Voraus auf andere Knoten umgeleitet werden. Wenn Sie eine Datenbank herunterfahren müssen, die noch Transaktionen empfängt, gibt die folgende Abfrage Informationen zu Sitzungen aus, die länger als 60 Sekunden ausgeführt wurden. Entscheiden Sie auf Grundlage dieser Informationen über den nächsten Schritt: mysql> SELECT trx_id, trx_started, (NOW() - trx_started) trx_duration_seconds, ID processlist_id, Benutzer, WENN (LEFT(HOST, (LOCATE(':', host) - 1)) = '', Host, LEFT(HOST, (LOCATE(':', host) - 1))) Host, Befehl, Zeit, REPLACE(SUBSTRING(info,1,25),'\n','') info_25 FROM information_schema.innodb_trx JOIN information_schema.processlist ON innodb_trx.trx_mysql_thread_id = processlist.id WHERE (NOW() - trx_started) > 60 ORDER BY trx_started; +--------+---------------------+----------------------+----------------+------+-----------+-----------+----------+----------+---------------------------+ | trx_id | trx_started | trx_duration_seconds | processlist_id | Benutzer | Host | Befehl | Zeit | info_25 | +--------+---------------------+----------------------+----------------+------+-----------+-----------+----------+------+---------------------------+ | 511239 | 22.04.2020 16:52:23 | 2754 | 3515 | dba | localhost | Ruhezustand | 1101 | NULL | | 511240 | 22.04.2020 16:53:44 | 74 | 3553 | root | localhost | Abfrage | 38 | update t1 set name="test" | +--------+---------------------+----------------------+----------------+------+-----------+-----------+----------+----------+---------------------------+ 2 Zeilen im Satz (0,00 Sek.) 3. Prozessliste löschenMySQL wird gleich die Verbindung trennen und herunterfahren. Wir können MySQL manuell helfen. Verwenden Sie pt-kill, um aktive und ruhende Verbindungen anzuzeigen und zu beenden. Zu diesem Zeitpunkt sollten keine neuen Schreibverbindungen eingehen. Wir verarbeiten nur Leseverbindungen. pt-kill --host="localhost" --victims="alle" --interval=10 --ignore-user="pmm|orchestrator" --busy-time=1 --idle-time=1 --print [--kill] Hier können Sie gezielt Verbindungsaufbauten bestimmter Benutzer ausschließen. 4. Konfigurieren Sie innodb so, dass die maximale Flush-Rate erreicht wirdGLOBAL SETZEN innodb_fast_shutdown=0; GLOBAL SETZEN innodb_max_dirty_pages_pct=0; GLOBAL FESTLEGEN innodb_change_buffering='keine'; Das Deaktivieren von innodb_fast_shutdown kann dazu führen, dass der Herunterfahrvorgang mehrere Minuten oder sogar Stunden dauert, da auf die Bereinigung des Undo-Protokolls und die Zusammenführung des Änderungspuffers gewartet werden muss. Um das Herunterfahren zu beschleunigen, setzen Sie innodb_max_dirty_pages_pct=0 und überwachen Sie die Ergebnisse der folgenden Abfrage. Der erwartete Wert ist 0, aber das ist nicht immer garantiert, wenn in MySQL Aktivität herrscht. Wenn das Ergebnis dann nicht weiter kleiner wird, können Sie mit dem nächsten Schritt fortfahren: GLOBALEN STATUS WIE „%dirty%“ ANZEIGEN; Wenn Sie die PMM-Überwachung verwenden, können Sie das Diagramm des „InnoDB-Änderungspuffers“ anzeigen. 5. Den Inhalt des Pufferpools ausgebenGLOBAL festlegen innodb_buffer_pool_dump_pct=75; GLOBAL festlegen innodb_buffer_pool_dump_now=ON; mysql> STATUS ANZEIGEN WIE 'Innodb_buffer_pool_dump_status'; +---------------------------------+-------------------------------------------------+ | Variablenname | Wert | +---------------------------------+-------------------------------------------------+ | Innodb_buffer_pool_dump_status | Dump des/der Pufferpool(s) abgeschlossen am 200429 14:04:47 | +---------------------------------+--------------------------------------------------+ 1 Zeile im Satz (0,01 Sek.) Um den gedumpten Inhalt beim Start zu laden, überprüfen Sie die Konfiguration des Parameters innodb_buffer_pool_load_at_startup. 6. PinselprotokollProtokolle spülen; Jetzt können Sie MySQL herunterfahren. Meistens führen wir einfach den Stoppbefehl aus und es ist normal, dass MySQL heruntergefahren und neu gestartet wird. Gelegentlich gibt es Probleme. Oben finden Sie Einzelheiten zum sicheren Herunterfahren von MySQL. Weitere Informationen zum sicheren Herunterfahren von MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Native JS realisiert den besonderen Effekt der Verbreitung von Liebe durch Mausbewegungen
Frage: <input type="hidden" name=&qu...
A: Normalerweise im Client gespeichert. jwt oder ...
Die Datenbankdaten der Projekttestumgebung sind v...
1. haslayout und bfc sind IE-spezifische und Stand...
Oder schreiben Sie den Installationsvorgang selbs...
In diesem Artikel wird der spezifische Code für J...
Durchführung von Prozessanalysen (1) Wie rufe ich...
Komponentengrundlagen 1 Wiederverwendung von Komp...
Inhaltsverzeichnis 1. Kommunikation zwischen Vate...
Hintergrund: Da die Projekte des Unternehmens dem...
erinnern: IDE-Festplatte: Die erste Festplatte is...
Entwicklungshintergrund: Ich arbeite derzeit an e...
MySQL UNION-Operator Dieses Tutorial stellt die S...
Ich habe heute Redis installiert und es sind eini...
Herunterladen und installierenUmgebungsvariablen ...