Maison  >  Article  >  base de données  >  Mysql combine sauvegarde + binlog pour restaurer les données d'opération supprimées accidentellement

Mysql combine sauvegarde + binlog pour restaurer les données d'opération supprimées accidentellement

php是最好的语言
php是最好的语言original
2018-08-07 11:23:182127parcourir

Combinez sauvegarde + binlog pour restaurer les données.

Scénario : Tous les préparatifs ont été effectués hier soir, mais ce matin, l'utilisateur a accidentellement supprimé une table.

Solution : Il n'est pas recommandé de restaurer directement dans l'environnement de production d'origine. Il est recommandé de restaurer l'intégralité de la base de données + les logs sur une autre machine puis de l'importer dans l'environnement de production.

Mysql combine sauvegarde + binlog pour restaurer les données dopération supprimées accidentellement

1) Créer une table

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) Faire une sauvegarde logique

mysqldump -uroot -p -F -R --all-databases > alldb_bak.sql

3) Simuler les opérations commerciales dans le matin

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) Suppression accidentelle à midi

select now(); -- 2018-04-27 06:29:00
drop table itpuxfg1;
select * from itpux.itpuxfg1;
show master status; -- 1078

5) Restaurer sur une autre machine (mon cas est local, la production ne doit pas être locale)

afficher l'état du maître ; utilisez ce nom de fichier pour sauvegarder le journal binlog requis

--n'oubliez pas de copier le journal binlog

afficher les événements du journal binlog dans 'itpuxdb-binlog.000003';

mysqlbinlog itpuxdb-binlog.000003 |grep "DROP TABLE"

mysqlbinlog itpuxdb-binlog.000003 |grep "itpuxfg1" (Veuillez faire la distinction entre deux versions différentes du journal )

Mysql combine sauvegarde + binlog pour restaurer les données dopération supprimées accidentellement

Mysql combine sauvegarde + binlog pour restaurer les données dopération supprimées accidentellement

Démo :

Supprimer la base de données de suppression de la bibliothèque itpux itpux ;

Restaurer :

Créez d'abord la base de données :

mysql> create database itpux default Character Set utf8 -- Si les conditions ne sont pas claires, il est recommandé d'interroger la base de données d'origine show create; base de données mysql;

mysql -uroot -p -o itpux

-- Après récupération, les enregistrements mis à jour ce matin sont introuvables

mysql> tables;

Mysql combine sauvegarde + binlog pour restaurer les données dopération supprimées accidentellement

-- Avant la récupération incrémentielle de la suppression de table via le journal binlog

[root@mysqldb binlog]# mysqlbinlog -vv --start-position= 219 --stop-position= 913 --database=itpux itpuxdb-binlog.000001 >sa.sql

--Restaurer cette table dans la base de données d'origine

Sauvegarder cette table à partir d'une autre base de données d'abord

mysqldump -uroot -p itpux itpuxfg1 > sa.sql

Restaurer directement la bibliothèque de production (les tables de la bibliothèque d'origine ont été supprimées)

mysql - uroot -p itpux

mysql> select * from itpuxfg1;

1) Restaurer cette table dans la base de données source

mysqldump -uroot - p itpux itpuxfg1 >sa.sql

Recommandations associées :

Comment restaurer une base de données supprimée MySQL sans sauvegarde

Réplication MySQL + récupération d'instantané Test expérimental de suppression accidentelle

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn