mysqldump全备份+mysqlbinlog日志备份实现将数据恢复到指定时刻

来源:互联网 发布:qq群发广告软件 编辑:程序博客网 时间:2024/05/29 03:01

首先介绍相对简单一点的数据库全备份——mysqldump:

mysqldump可以备份整个数据库,也可以是其中的数张表,一下演示备份整个数据库:

1、首先查看一下已经存在的数据库:

show databases


2、创建一个新的数据库用于演示数据库全备份:

create database testdump


3、切换到新创建的数据库

use testdump


4、创建表:

CREATE TABLEmytime(
 
id  INT AUTO_INCREMENT PRIMARY KEY,
 
now DATETIME
)


5、往表中插入数据:(一下语句执行四次)

insert intomytime(now)values(now());


6、查看表中数据:select * from mytime;


可以看到目前表中有四条记录

7、退出mysql,到mysql的安装目录下:


8、备份数据库,生成一个全备份sql:


可以看到备份的时间是05:21

9、查看当前目录下的文件:


可以看到已经存在一个名为testdump0521.sql的文件。

10、现在模拟误操作,删除了整个testdump数据库

drop database testdump


11、可以看到数据库已经被删除了,现在新建一个数据库:


12、切换到数据库:


可以看到,当前数据库中没有表。现在恢复数据库数据:

13、执行刚才全备份导出的sql文件


14、查看数据库中数据,可以看到数据库表已经自动创建好了,数据也恢复了


现在模拟使用mysqlbinlog日志恢复数据,如果不知道binlog如何启动以及基本操作,请查看我的这篇博客:点击打开链接

1、首先是观察表中内容:


2、插入两条新的内容:


3、现在模拟数据库数据丢失,删除了整个数据库:


删除数据库的操作为05:34,

4、现在通过数据库全备份以及日志备份恢复数据:

首先创建数据库:


5、执行刚才全备份导出的sql语句:


可以看到数据已经恢复到05:21时刻,现在将05:21到05:34的数据恢复:

6、首先查看当前主要日志文件:


7、进入到mysql的安装目录,将05:21到05:33之间执行的sql导出来8、

8、在mysql命令行中执行该sql语句

9、查看数据

可以看到数据又回来了。

总结:

真实情况下应该是数据库全备份+日志备份一起用才能达到将数据库恢复到指定时刻的效果。比如我在19:00:00对数据库进行全备份,在19:30:00数据库数据丢失,我们可以在临时数据库使用备份数据恢复数据,然后根据日志将19:00:00到19:30:00的数据恢复,这样就可以达到将数据恢复到19:30:00的效果。


阅读全文
0 0
原创粉丝点击