Kombinieren Sie Backup + Binlog, um Daten wiederherzustellen.
Szenario: Nachdem der Benutzer gestern Abend alle Vorbereitungen getroffen hatte, hat er heute Morgen versehentlich eine Tabelle gelöscht.
Lösung: Eine direkte Wiederherstellung in der ursprünglichen Produktionsumgebung wird nicht empfohlen. Es wird empfohlen, die gesamte Datenbank + Protokolle auf einem anderen Computer wiederherzustellen und sie dann in die Produktionsumgebung zu importieren.
1) Tabelle erstellen
select now(); create table itpuxfg1 ( `id` int(10) unsigned not null auto_increment, `name` varchar(16) not null, `sex` enum('m','w') not null default 'm', `age` tinyint(3) unsigned not null, primary key (`id`) ) engine=innodb default charset=utf8; insert into itpux.itpuxfg1(`name`,`sex`,`age`) values ('itpux1','w',21), ('itpux2','m',22), ('itpux3','w',23), ('itpux4','m',24), ('itpux5','w',25); commit; select * from itpux.itpuxfg1;
2) Logisches Backup erstellen
mysqldump -uroot -p -F -R --all-databases > alldb_bak.sql
3) Geschäftsabläufe am Morgen simulieren
show master status; -- 154 select now(); -- 2018-04-27 06:27:40 update itpux.itpuxfg1 set name='itpux04' where id=4; commit; select * from itpux.itpuxfg1; select now(); -- 2018-04-27 06:28:03 update itpux.itpuxfg1 set name='itpux05' where id=5; commit; select * from itpux.itpuxfg1; show master status; -- 890
4) Versehentliches Löschen mittags
select now(); -- 2018-04-27 06:29:00 drop table itpuxfg1; select * from itpux.itpuxfg1; show master status; -- 1078
5) Wiederherstellung auf einer anderen Maschine (in meinem Fall ist es lokal, die Produktion sollte nicht lokal sein)
Master-Status anzeigen ; übergeben Dieser Dateiname, das Binlog, das für die Vorwärtssicherung benötigt wird
-denken Sie daran, das Binlog-Protokoll zu kopieren
Binlog-Ereignisse in „itpuxdb-binlog.000003“ anzeigen;
mysqlbinlog itpuxdb-binlog .000003 |grep "DROP TABLE"
mysqlbinlog itpuxdb-binlog.000003 |grep "itpuxfg1" (Beachten Sie, dass die beiden verschiedenen Versionen des Protokolls bitte unterschieden werden )
Demo:
Löschen Sie die itpux-Bibliotheks-Drop-Datenbank itpux;
Wiederherstellen:
Erstellen Sie zuerst die Datenbank:
MySQL> Datenbank erstellen itpux Standardzeichensatz utf8 – Wenn die Bedingungen nicht klar sind, wird empfohlen, die ursprüngliche Datenbank abzufragen ;
mysql -uroot -p - o itpux
-- Nach der Wiederherstellung können die heute Morgen aktualisierten Datensätze nicht gefunden werden
show tables;
-- Vor dem Löschen der Tabelle durch inkrementelle Wiederherstellung des Binlog-Protokolls
[root@mysqldb binlog]# mysqlbinlog -vv --start-position=219 --stop-position=913 --database=itpux itpuxdb- binlog.000001 >sa.sql
--Diese Tabelle in der Originaldatenbank wiederherstellen
Diese Tabelle aus einer anderen Datenbank sichern zuerst
mysqldump -uroot - p itpux itpuxfg1 > sa.sql
Stellen Sie die Produktionsbibliothek direkt wieder her (die Tabellen in der Originalbibliothek wurden gelöscht)
mysql -uroot -p itpux
mysql> select * from itpuxfg1;
1) Stellen Sie diese Tabelle in der Quellbibliothek wieder her
mysqldump -p itpux itpuxfg1 > ;sa.sql
Verwandte Empfehlungen:
So stellen Sie eine von MySQL gelöschte Datenbank ohne Backup wieder her
MySQL-Replikation + Snapshot-Wiederherstellung bei versehentlichem Löschvorgang experimenteller Test
Das obige ist der detaillierte Inhalt vonMySQL kombiniert Backup + Binlog, um versehentlich gelöschte Betriebsdaten wiederherzustellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!