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

So positionieren Sie die Kopfzeile mithilfe des CSS-Sticky-Layouts oben

Anwendungsszenarien: Eine der neuen Anforderungen...

MySQL-Backup-Tabellenvorgang basierend auf Java

Der Kern ist mysqldump und Runtime Der Vorgang is...

MySQL 8.0.13 Download- und Installations-Tutorial mit Bildern und Text

MySQL ist die am häufigsten verwendete Datenbank....

dh Filtersammlung

Der IE hat uns in der frühen Entwicklungsphase Ko...

Zusammenfassung der Grundkenntnisse und Vorgänge der MySQL-Datenbank

Dieser Artikel erläutert anhand von Beispielen di...

Mysql-Operation zum Abrufen von Tabellenkommentarfeldern

Ich werde nicht viel Unsinn erzählen, schauen wir...

Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls

Inhaltsverzeichnis Legen Sie beim Erstellen einer...

Schnelle Lösung zum Vergessen des MySQL8-Passworts

Vorwort Wenn wir das MySQL-Datenbankkennwort verg...

Zusammenfassung neuer Anwendungsbeispiele für Calculated in Vue3

Die Verwendung von „Computed“ in vue3. Da vue3 mi...

Problem beim Testen des nicht autorisierten Zugriffs auf Zookeeper

Inhaltsverzeichnis Vorwort Erkennen des geöffnete...