Vorwort Bei der täglichen Arbeit oder beim Studium ist es unvermeidlich, dass Sie aufgrund von „Unachtsamkeit“ beim Bedienen der Datenbank Fehler machen. Wenn Sie schnell wiederherstellen müssen, ist es unwahrscheinlich, dass dies durch ein Backup möglich ist. Der folgende Artikel stellt hauptsächlich die Methode zur Verwendung von binlog2sql vor, um nach einem Mysql-Fehlbetrieb schnell zurückzusetzen. Schauen wir uns ohne weiteres die detaillierte Einführung an: 1. Allgemeine Erklärung: DML (Datenmanipulationssprache): Dabei handelt es sich um SELECT, UPDATE, INSERT und DELETE. Wie die Namen vermuten lassen, werden diese vier Befehle verwendet, um mit den Daten in der Datenbank zu arbeiten. DDL (Datendefinitionssprache): DDL hat mehr Befehle als DML. Die wichtigsten Befehle sind CREATE, ALTER, DROP usw. DDL wird hauptsächlich verwendet, um die Struktur einer Tabelle, Datentypen, Links und Einschränkungen zwischen Tabellen und andere Initialisierungsaufgaben zu definieren oder zu ändern. Sie werden hauptsächlich beim Erstellen einer Tabelle verwendet. DCL (Datensteuerungssprache): Es handelt sich um eine Datenbanksteuerungsfunktion. Es wird verwendet, um die Berechtigungen von Datenbankbenutzern oder -rollen festzulegen oder zu ändern, einschließlich Anweisungen zum Gewähren, Verweigern, Widerrufen usw. Standardmäßig haben nur sysadmin, dbcreator, db_owner oder db_securityadmin die Berechtigung, DCL auszuführen. 2. Installation von binlog2sql Analysieren Sie das gewünschte SQL aus dem MySQL-Binärprotokoll. Abhängig von den Optionen können Sie das ursprüngliche SQL abrufen, SQL zurücksetzen, SQL ohne Primärschlüssel einfügen usw. 2.1. Zweck
2.2 Installation # cd /usr/local # git-Klon https://github.com/danfengcao/binlog2sql.git # ls binlog2sql Spiele Java lib64 MariaDB sbin src # cd binlog2sql # pip install -r Anforderungen.txt -bash: pip: Befehl nicht gefunden -------------Pip-Tool installieren------------- # wget https://bootstrap.pypa.io/get-pip.py # python get-pip.py # pip -V # Pip-Version pip 9.0.1 von /usr/lib/python2.7/site-packages anzeigen (Python 2.7) # pip install -r Anforderungen.txt Anforderung bereits erfüllt: PyMySQL==0.7.8 in /usr/lib/python2.7/site-packages (aus -r requirements.txt (Zeile 1)) Anforderung bereits erfüllt: wheel==0.24.0 in /usr/lib/python2.7/site-packages (aus -r requirements.txt (Zeile 2)) Anforderung bereits erfüllt: mysql-replication==0.9 in /usr/lib/python2.7/site-packages (aus -r requirements.txt (Zeile 3)) 2.3. Der vom Benutzer benötigte Mindestsatz an Berechtigungen: Es wird empfohlen, ausgewählte Super-/Replikations-Clients und Replikations-Slaves zu berechtigen. mysql > GRANT SELECT,REPLICATION SLAVE,REPLICATION CLIENT ON *.* an flashback@'localhost', identifiziert durch 'flashback'; mysql > GRANT SELECT,REPLICATION SLAVE,REPLICATION CLIENT ON *.* an flashback@'127.0.0.1', identifiziert durch 'flashback'; 2.4 Grundlegende Verwendung Standard-SQL analysieren Shell> Python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -ddatabase -t Tabelle1 Tabelle2 --start-file='mysql-bin.000002' --start-datetime='2017-01-12 18:00:00' --stop-datetime='2017-01-12 18:30:00' --start-pos=1240 Analysieren Sie das Rollback-SQL Shell> Python binlog2sql.py --flashback -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttest3 --start-file='mysql-bin.000002' --start-position=763 --stop-position=1147 3. Prüfung: 3.1. Neue Tabelle „Benutzer“ erstellen create table cope_users like info_users; # Eine neue Tabelle erstellen insert into cope_users select * from info_users limit 500; # 500 Datenzeilen einfügen delete from cope_users where id<20; # 20 Datenzeilen löschen 3.2. Standard-SQL analysieren # python /usr/local/binlog2sql/binlog2sql/binlog2sql.py -uflashback -pflashback -dttt -tusers --start-file='mysql-bin.000034' --start-datetime='2017-07-11 15:10:00' --stop-datetime='2017-07-11 15:12:00' Löschen Sie aus "ttt ".`users`, wobei` uid` = '0e8e2609c748bbbbbb052d7' und `ip` = '172.16.208.32' und` sex` = 0 und 'app_ver` =' 5. 'und `Device_type` = 2 und `Guides` = = = 2 und` = 2 und ` `id` = 1 und` latitude` = '' und ad_time` = 1481602080 und `recharge_time` = 0 und` token_change_time` = 1481602129 und `expire_time` = 0 und` nickname` = '阿超' und `device_ID` = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 7d64b79e8 'und `push_key` =' 'und' Level` = 0 und 'Mobile` =' 188108955535 'und" Einstellungen "=' 'und" Longitude "=' 'und" Signature "=' 'und" OS_VER` =' 'Limit 1; DELETE FROM `ttt`.`users` WHERE `uid`='b5cfbdb4205b56703a97' AND `ip`='172.16.208.48' AND `sex`=0 AND `app_ver`='5.2.2' AND `device_type`=2 AND `guides`='' AND `last_login_time`=1481602096 AND `id`=2 AND `latitude`='' AND `add_time`=1481602096 AND `recharge_time`=0 AND `token_change_time`=1481602096 AND `expire_time`=0 AND `nickname`='家长091410' AND `device_id`='fedea666076a7906be53523acc7a8b32811354fe' AND `push_key`='7759d6772c9851a2bfc13835a3d7e7da' AND `level`=0 AND `mobile`='13629470521' AND `settings`='' AND `longitude`='' AND `signature`='' AND `os_ver`='' LIMIT 1; #start 79078 end 83053 time 2017-07-11 15:11:50 3.3. Analysieren Sie das Rollback-SQL # python /usr/local/binlog2sql/binlog2sql/binlog2sql.py --flashback -h127.0.0.1 -P3306 -uflashback -pflashback -dttt -tusers --start-file='mysql-bin.000034' --start-position=79078 --stop-position=83053 Überprüfen Sie das analysierte SQL. Wenn es korrekt ist, können Sie es in die SQL-Datei /data/backup/rollback.sql drucken. # python /usr/local/binlog2sql/binlog2sql/binlog2sql.py --flashback -uflashback -pflashback -dttt -tusers --start-file='mysql-bin.000034' --start-position=79078 --stop-position=83053> /data/backup/rollback.sql # Katze /data/backup/rollback.sql `id`, `latitude`, `add_time`, `recharge_time`, `token_change_time`, `expire_time`, `nickname`, `device_id`, `push_key`, `level`, `mobile`, `settings`, `longitude`, `signature`, `os_ver`) VALUES ('24667530f4b16a446b3e', '172.16.218.75', 0, '5.2.93', 3, '{\"2103\":1,\"2100\":1,\"2101\":1,\"2102\":1,\"2104\":1,\"2105\":1}', 1490239125, 19, '', 1481610680, 0, 1490239125, 0, 'zf', 'da75b093-bd22-48f6-bbb1-d3296e29e9b5', 'be05183f80a96e788e0b0a99d1275392', 0, '15101538925', '', '', '', ''); #start 79078 end 83053 time 2017-07-11 15:11:50 Einfügen in `ttt`.`users` , "push_key", "Level", "Mobile", "Einstellungen", "Längengrad", "Signatur", "os_ver`) Werte (" 77e50b4910a9389057ed "," 172.16.218.371610, "," 5.2.1.14 ", 3, 3,", ",", "14887835", ", 3,", ",", ",", ",", ",", "," 517, 0, 1488787835, 0, '陈俊宇', ED0A273D-74DE-4173-92C6-55D92597BC79 ',' ', 0,' 18612482272 ',', 116.306826 'Timing 8307-23-23,'); : 50 MySQL-Verbindungskonfiguration -h Host; -P Port; -u Benutzer; -p Passwort Parsing-Modus
Steuerung des Auflösungsbereichs
Objektfilterung
3.4. Starten Sie das Rollback # mysql -uroot -p000000 < /data/backup/rollback.sql 3.5. Überprüfung der Login-Datenbank IV. Vorsichtsmaßnahmen 4.1. In der Konfigurationsdatei werden folgende Parameter gesetzt: Server-ID = 1 log_bin = /data/mysql/mysql-bin.log max_binlog_size = 1 G binlog_format = Zeile binlog_row_image = voll # Standard 4.2. Der MySQL-Dienst muss während des Flashbacks gestartet werden Da der Binlog-Inhalt über das BINLOG_DUMP-Protokoll abgerufen wird, muss die serverseitige Tabelle information_schema.COLUMNS gelesen werden, um die Metadaten der Tabellenstruktur abzurufen, bevor sie in SQL-Anweisungen eingefügt werden können. Daher müssen den Benutzern mindestens die folgenden Berechtigungen erteilt werden: GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'Benutzer'@'%'; Im Quellcode wird die Python-MySQL-Replikation hauptsächlich als Echtzeitanalyse des MySQL-Binärprotokolls verwendet, um jedes EREIGNIS abzurufen. python-mysql-replication implementiert das MySQL-Replikationsprotokoll. Der Client gibt sich als Slave aus, um das Binärprotokoll und das Ereignis des Masters abzurufen. 4.3. In den meisten Fällen können Standard-SQL und Rollback-SQL zum Einfügen, Aktualisieren und Löschen analysiert werden. Eine Ausnahme: nach Einfüge-, Aktualisierungs-, Löschvorgängen, Löschen/Abschneiden der Tabelle. Obwohl zu diesem Zeitpunkt alle Ereignisse in Binlog aufgezeichnet werden, kann die entsprechende Tabelle der DML-Operation nicht mehr gefunden werden, wenn binlog2sql zum Generieren von Standard-SQL und Rollback-SQL verwendet wird. 4.4. DDL kann binlog2sql nicht zum Flashback von Daten verwenden. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen bei Ihrem Studium oder Ihrer Arbeit helfen kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Erläuterung der neuen Funktion von Hadoop 2.X, der Papierkorbfunktion
>>: Erläuterung des Arbeitsmechanismus von Namenode und SecondaryNameNode in Hadoop
Vorwort Aufgrund der schwachen Typisierung von JS...
Die virtuelle Maschine wird auf dem Hostcomputer ...
Warum optimieren: Beim Start des eigentlichen Pro...
1. Installation von Docker unter CentOS8 curl htt...
Bei der heutigen Projektoptimierung ist bei MySQL...
Inhaltsverzeichnis Vorwort Anwendungsszenarios fü...
Vorwort Ich habe in letzter Zeit das Gefühl, dass...
1. Installieren Sie zabbix-agent auf web01 Zabbix...
Inhaltsverzeichnis Vorwort Einführung in SessionS...
Ich habe kürzlich ein WeChat-Applet geschrieben u...
mysql bereinigt Binlog-Protokolle korrekt Vorwort...
Inhaltsverzeichnis Gängige Komprimierungsformate:...
Inhaltsverzeichnis Vorwort Keep-Avlive-Hook-Funkt...
In diesem Artikel wird der spezifische Code für J...
1. Zusammengesetzter Primärschlüssel Der sogenann...