MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

MySQL的备份

  • *建立实验数据库及模拟数据

use enterprisedb;

show tables;

 

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

 

  • 利用mysqldump 备份所建立数据库的所有表

 

在命令行下,不在mysql中,当然也不需要分号。。。

mysqldump -u root -p enterprisedb >"D:\test.sql"

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

 

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

 

 

 

 

在任意表中插入新的数据

 

insert into employee values(86007,'Hence','M','1965.6.13','Marketing',12000,1);


insert into employee values(86006,'Hence','M','1965.6.13','Marketing',12000,1);

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

 

MySQL的恢复

  • 删除所建立的数据库

drop database enterprisedb;

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

 

  • 利用1.2中的备份文件恢复数据库

在这之前要在MYSQL中重新建立一个

create database enterprisedb;

来接收备份的文件。

命令行下,不需要分号。

mysql -u root -p enterprisedb <D:\test.sql

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

  • 利用mysqlbinlog恢复1.3中所插入的数据,并验证

show master logs;  

查看自己的操作被记录在了那个binlog文件中(一般存放在标号最大的ID下)

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

 

show binlog events in 'binlog.000015';

引号中的文件名称对应的上面表格中的名字

查看这个日志文件中记录了那些操作。

在删除数据库之前,我插入了两条数据。截取的图片中,最后一行可以看到是drop操作。那么前面两段对应的应该是insert操作。

但是,应该注意的是,insert语句对应了不止一个记录。要从BEGIN对应的标号开始,到SET.....信息结束。每个insert对应了五条记录。

 

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

 

mysql> show variables like '%datadir%'

 

找到对应的binlog文件所在的文件夹;命令行使用cd 语句进入该目录下

 

 

C:\Program Files\MySQL\MySQL Server 8.0\data>mysqlbinlog binlog.000015 --start-position 234 --stop-position 928|mysql -u root -p

 

因为我插入了2条语句,所以234是开始位置,928是结束位置(928也是drop语句的开始位置)。

 

C:\Program Files\MySQL\MySQL Server 8.0\data>mysql -u root -p

Enter password: ******

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

use enterprisedb;

select * from employee;

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用

可以看出,恢复了两条插入语句。 


参考博文:
Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

MySQL使用binlog日志做数据恢复

MySQL 二进制日志(Binary Log)


差不多对吧,应该这样的吧。

MySQL 的备份与恢复 mysqldump mysqlbinlog 的使用