Ursachen und Lösungen für MySQL-Datenverlust

Ursachen und Lösungen für MySQL-Datenverlust

Vorwort

In letzter Zeit erhalten wir gelegentlich Rückmeldungen von Benutzern über fehlende Daten oder Datenverlust. Aus phänotypischer Sicht ist diese Art von Problem auf Datenbankebene das dringendste. Wenn man objektive Bedingungen außer Acht lässt, sind die einzigen Wiederherstellungsmethoden für diese Art von Problem die Wiederherstellung von Backups + Binlog-Wiedergabe, was normalerweise lange dauert und große Auswirkungen auf das Geschäft hat.

Da es sich jedoch um eine Software handelt, die auf Stabilität ausgerichtet ist, ist die Wahrscheinlichkeit eines Datenverlusts tatsächlich sehr gering. Geht es bei diesen Feedback-Problemen also wirklich um „Datenverlust“?

Problembeschreibung

Eines Tages mittags erhielten wir von einem Benutzer die Rückmeldung, dass nach dem Einloggen mit einem Geschäftskonto in die Datenbank die Geschäftsdatenbank verschwunden sei.

Ursachenanalyse

Als ich diese Frage erhielt, war die Atmosphäre immer noch sehr angespannt. Einerseits kontaktierte ich den Benutzer, um den Login zur Datenbank für die Untersuchung zu autorisieren, und andererseits kommunizierte ich mit dem Benutzer, um zu sehen, welche Änderungen kürzlich vorgenommen wurden.

Nachdem ich mich bei der Datenbank angemeldet hatte, stellte ich fest, dass die Geschäftsdatenbank vorhanden war. In Kombination mit dem Feedback des Benutzers: „Die Geschäftsdatenbank ist weg“ stellte ich zunächst fest, dass das Geschäftskonto keine Berechtigungen hatte. Nachdem ich mit Show Grants geprüft hatte, stellte ich fest, dass das Geschäftskonto nur USAGE-Berechtigungen hatte, ähnlich dem folgenden Effekt:

mysql> Berechtigungen anzeigen;
+----------------------------------+
| Zuschüsse für test@% |
+----------------------------------+
| GRANT USAGE ON *.* TO 'test'@'%' |
+----------------------------------+
1 Zeile im Satz (0,00 Sek.)

Da dieses Konto nur über die Mindestberechtigungen verfügt, ist es offensichtlich, dass es „keine Geschäftsdaten sehen kann“, sodass das Problem nach der erneuten Autorisierung behoben war. Nach einer Untersuchung wurde festgestellt, dass der erste Autorisierungsvorgang auf einem anderen Konto mit demselben Namen erfolgte, ähnlich wie:

mysql> Berechtigungen anzeigen;
+-------------------------------------------------------------+
| Zuschüsse für [email protected].% |
+-------------------------------------------------------------+
| GEWÄHREN SIE ALLE PRIVILEGIEN FÜR prd_name.* AN 'test'@'10.120.117.%' |
+-------------------------------------------------------------+
1 Zeile im Satz (0,00 Sek.)

MySQL>

Expandieren

In Bezug auf das Phänomen des „Datenverlusts“: Wenn die Daten auf der gesamten Datenbankebene „verloren“ gehen, die Datenbank selbst jedoch normal ist, besteht eine hohe Wahrscheinlichkeit, dass das Problem dasselbe ist wie in diesem Fall: ein Berechtigungsfehler. Dieses Problem kann grundsätzlich auf zwei Arten auftreten: 1. Das angemeldete Konto stimmt mit einem anderen Konto mit gleichem Namen überein. 2. Es liegt ein Autorisierungsproblem vor, sodass das Geschäftskonto keine Berechtigungen besitzt. Der schlimmste Fall ist natürlich definitiv der Vorgang zum Löschen der Datenbank. Nur durch Parsen des Binärprotokolls kann der Ausführungszeitpunkt dieses Vorgangs ermittelt werden.

Die andere Kategorie ist der „teilweise Datenverlust“, z. B. wenn eine Tabelle fehlt oder einige Daten in der Tabelle fehlen usw. Genau genommen können derartige Probleme auch durch Berechtigungsfehler verursacht werden, denn die Berechtigungskontrolle von MySQL kann zwar auf Tabellen- und Spaltenebene erfolgen, wird in der Realität aber im Allgemeinen nicht genutzt. In den meisten Fällen liegt es an einer fehlerhaften Bedienung, beispielsweise einer fehlenden Where-Bedingung beim Aktualisieren oder Löschen. In diesem Fall können Sie nur das historische Backup verwenden und dann mit Binlog wiederherstellen. Dieser Vorgang ist in der Tencent Cloud als „Rollback“-Funktion gekapselt.

Um zusammenzufassen

Wenn Sie auf diese Art von Problem stoßen, können Sie sich einen Moment Zeit nehmen, um das Problem zu beobachten. Die erneute Autorisierung kann nur wenige Sekunden dauern, um dieses sehr dringende und schwerwiegende Problem des „Datenverlusts“ zu lösen.

Oben sind die detaillierten Gründe und Lösungen für MySQL-Datenverlust aufgeführt. Weitere Informationen zum MySQL-Datenverlust finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Lösen Sie das Problem des MySQL-Datenverlusts, wenn Docker Redis neu startet
  • Lösung für das Problem des Datenverlusts bei Verwendung der Ersetzungsoperation in MySQL
  • Mehrere Lösungen zur Vermeidung von MySQL-Datenverlust bei einem Serverausfall
  • Fehlerbehebung bei MySQL-Datenverlust

<<:  Zusammenfassung der Spring Boot Docker-Verpackungstools

>>:  Vue+axios-Beispielcode zum Hochladen von Bildern und Erkennen von Gesichtern

Artikel empfehlen

Detaillierte Erklärung zur Verwendung der Element-el-button-Button-Komponente

1. Hintergrund Schaltflächen werden sehr häufig v...

Ein zeitaufwändiger Fehlerbehebungsprozess für einen Docker-Fehler

Inhaltsverzeichnis Herkunft Umweltinformationen F...

Analyse des MySQL-Warnprotokolls zu abgebrochenen Verbindungen

Vorwort: Manchmal wird die mit MySQL verbundene S...

Detaillierte Erklärung des HTML-Seitenkopfcodebeispiels

Wissenspunkt 1: Legen Sie die Basis-URL der Webse...

GET POST Unterschiede

1. „Get“ wird verwendet, um Daten vom Server abzu...

Einige Vorschläge zur Gewährleistung der MySQL-Datensicherheit

Daten sind das wichtigste Kapital eines Unternehm...

Die Magie des tbody-Tags beschleunigt die Anzeige von Tabelleninhalten

Sie haben sicher schon einmal die Webseiten andere...

Implementierungsprinzip und Prozessanalyse der TCP-Leistungsoptimierung

Drei-Wege-Handshake-Phase Anzahl der Wiederholung...

Implementierung der Knotenverbindung zur MySQL-Abfragetransaktionsverarbeitung

Inhaltsverzeichnis Geben Sie das Thema MySQL ein:...

Detaillierte Erläuterung des Beispiels für MySQL-Integritätsbeschränkungen

Dieser Artikel beschreibt die MySQL-Integritätsbe...

Detaillierte Erklärung der Sperrstruktur in MySQL

Mysql unterstützt 3 Arten von Sperrstrukturen Spe...

Tutorial zu HTML-Tabellen-Tags (3): Breiten- und Höhenattribute WIDTH, HEIGHT

Standardmäßig werden Breite und Höhe der Tabelle ...

Tutorial zur Installation und Konfiguration der Centos7-MySQL-Datenbank

1. Systemumgebung Die Systemversion nach dem Yum-...