VorwortIn 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“? ProblembeschreibungEines 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. UrsachenanalyseAls 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> ExpandierenIn 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 zusammenzufassenWenn 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:
|
<<: Zusammenfassung der Spring Boot Docker-Verpackungstools
>>: Vue+axios-Beispielcode zum Hochladen von Bildern und Erkennen von Gesichtern
Gestern, als ich die Funktion zum Hochladen von B...
<br />Gestalten Sie Ihre Website wissenschaf...
Da die von nativen JS initiierten Netzwerkanforde...
1. löschen delete ist die einzige wirkliche Mögli...
HTML-img-Tag: definiert ein Bild, das in eine Webs...
Grundlegende Vorbereitung Für diese Implementieru...
Für Anfänger, die gerade mit dem Erstellen einer ...
Die Hauptfunktion eines Rechners besteht darin, n...
Vmware-Installation Pakete installieren Download-...
Vorwort Die MySQL-Abfrage verwendet den Select-Be...
MySQL-Download-Adresse: https://obs.cn-north-4.my...
Inhaltsverzeichnis Vorwort Tatsächlicher Kampf 1....
Zwei Parameter der MySQL-Paging Wählen Sie * aus ...
Herzlichen Glückwunsch, dass Sie Ihren Chef endli...
<br />Im vorherigen Artikel habe ich die Sch...