一、
mysql> show databases;
mysql> create database test;
mysql> use test;
mysql> create table tb1(int id primary key auto_increment,name varchar(20));
mysql> insert into tb1(name) values('zhangsan');
mysql> insert into tb2(name) values('lisi');
mysql> flush logs;
mysql> delete from tb1 where id = 2;
mysql> insert into tb1(name) values('wangwu');
查看bin-log文件开启状态
show vairables like '%log_bin%';
二、将数据库进行备份
开启另一个cmd 窗口,输入下面的命令,将我们的数据库备份到test.sql中,这个时候我们的test.sql是保存在一个bin目录下的
C:\Program Files\MYSQL\mysql-8.0.11-winx64\bin>mysqldum -uroot -pzbt123456 -p test>test.sql
Enter password: *********
三、将删除的数据库进行还原
1、重新打开一个cmd窗口,登录mysql
C:User\Administration>cd C:\Program Files\MYSQL\mysql-8.0.11-winx64\bin //进入滨目录
C:\Program Files\MYSQL\mysql-8.0.11-winx64\bin>net start mysql//开启Mysql
C:\Program Files\MYSQL\mysql-8.0.11-winx64\bin>mysql -uroot -p //登录Mysql
Enter Password:**********
mysql>create database test;
2、删除test数据库
mysql>drop database test;
方式一:重新进入开启登录mysql,创建一个test数据库,从
mysql> create database test;
mysql> source test.sql;
这样就是用了source降数据库进行恢复了
方式二:使用mysql 恢复我们的数据库,进入另一个cmd窗口,在另一个cmd窗口进入到mysql的bin目录下,进行还原操作
C:User\Administration>cd C:\Program Files\MYSQL\mysql-8.0.11-winx64\bin //进入bin目录
C:\Program Files\MYSQL\mysql-8.0.11-winx64\bin>mysql -uroot -p test<test.sql //执行还原
Enter Password:**********
以上时使用mysqldum的方式进行备份数据库和还原数据,上面这条语句将我们的test数据库备份的二进制文件到了test.sql中;
方式三:使用binlog 将数据进行还原,前面的两种方式是假设我们的数据库突然被不小心删除了,但是具有一定的局限性,一旦
1、查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值
show master status
记住最后跟新的那个日志文件为binlog.000026
2、使用下面的语句可以定位我们我们进行某一个操作的起始位置和结束位置
mysql>show binlog events in 'binlog.000026'
3、重新打开一个窗口,进入到mysql的bin目录下,使用mysqlbinlog查看详细信息(因为使用了主从同步,所以我们的binlog文件会在从服务区中保存)
D:\MYSQL\mysql-8.0.11-winx64\bin>mysqlbinlog D:MySQL\mysql-8.0.11-winx64\data\binlog.000001
4、从文件中我们可以看到delete操作的stop-position是1872;stop-position是1903
D:\MYSQL\mysql-8.0.11-winx64\bin>mysqlbinlog D:MySQL\mysql-8.0.11-winx64\data\binlog.000001>D:MySQL\mysql-8.0.11-winx64\baklog\binlog.000001//将日志文件备份
D:\MYSQL\mysql-8.0.11-winx64\bin>mysqlbinlog --stop-position=1872 D:MySQL\mysql-8.0.11-winx64\data\binlog.000001>D:MySQL\mysql-8.0.11-winx64\baklog\1872.sql
D:\MYSQL\mysql-8.0.11-winx64\bin>mysqlbinlog --start-position=1903 D:MySQL\mysql-8.0.11-winx64\data\binlog.000001>D:MySQL\mysql-8.0.11-winx64\baklog\1903.sql
5、删除数据库
drop database if exits test ;
6、使用下面三条语句进行恢复数据
D:\MYSQL\mysql-8.0.11-winx64\bin<mysqlbinlog -uroot -p<D:MySQL\mysql-8.0.11-winx64\baklog\binlog.000001
Enter Password:*********
D:\MYSQL\mysql-8.0.11-winx64\bin<mysqlbinlog -uroot -p<D:MySQL\mysql-8.0.11-winx64\baklog\1872.sql
Enter Password:*********
D:\MYSQL\mysql-8.0.11-winx64\bin<mysqlbinlog -uroot -p<D:MySQL\mysql-8.0.11-winx64\baklog\1903.sql
Enter Password:*********
使用以上方法可以恢复错误删除的记录
参考:
1、https://jasonsimple.gitbooks.io/mysql/content/4-mysqlxi_tong_jia_gou.html
2、https://blog.csdn.net/tianmohust/article/details/7580695
3、https://www.cnblogs.com/martinzhang/p/3454358.html