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

Bietet hilfreiche Vorschläge zur Verbesserung des Website-Designs

<br />Gestalten Sie Ihre Website wissenschaf...

Definieren Sie Ihre eigene Ajax-Funktion mit JavaScript

Da die von nativen JS initiierten Netzwerkanforde...

So löschen Sie eine Eigenschaft eines Objekts in JavaScript

1. löschen delete ist die einzige wirkliche Mögli...

img usemap Attribut China Karte Link

HTML-img-Tag: definiert ein Bild, das in eine Webs...

CSS3 erstellt eine Webanimation, um einen springenden Balleffekt zu erzielen

Grundlegende Vorbereitung Für diese Implementieru...

Entwickeln Sie Beispielcode für einen Taschenrechner mit nativem JavaScript

Die Hauptfunktion eines Rechners besteht darin, n...

Der gesamte Prozess der Installation von mysql5.7.22 unter der ARM64-Architektur

MySQL-Download-Adresse: https://obs.cn-north-4.my...

MySQL-Implementierung für pessimistisches und optimistisches Sperren

Inhaltsverzeichnis Vorwort Tatsächlicher Kampf 1....

Einfaches Beispiel für den Grenzwertparameter der MySQL-Paging

Zwei Parameter der MySQL-Paging Wählen Sie * aus ...

Webdesign-Tutorial (2): Über Nachahmung und Plagiat

<br />Im vorherigen Artikel habe ich die Sch...