首先介绍相对简单一点的数据库全备份——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的效果。