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

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


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysqldumpMySQL数据库备份工具,可以用于备份整个数据库或单个表。mysqldump增量备份数据库的方法如下: 1.首先创建一个备份,使用以下命令: ```shell mysqldump -u username -p --databases dbname > dbname_full_backup.sql ``` 其,username是MySQL数据库的用户名,dbname是要备份的数据库名,-p选项会提示输入密码。 2.创建一个用于存储增量备份的目录,例如: ```shell mkdir /path/to/incremental/backup ``` 3.使用以下命令创建一个增量备份: ```shell mysqldump -u username -p --databases dbname --no-create-info --skip-triggers --single-transaction --flush-logs | gzip > /path/to/incremental/backup/dbname_incr_backup_$(date +%F_%T).sql.gz ``` 其,--no-create-info选项表示只备份数据而不备份表结构,--skip-triggers选项表示不备份触发器,--single-transaction选项表示使用事务来确保备份的一致性,--flush-logs选项表示刷新二进制日志以便备份程序可以访问新的日志文件。 4.将增量备份文件备份文件一起恢复到新的MySQL服务器上,使用以下命令: ```shell gunzip -c dbname_full_backup.sql.gz | mysql -u username -p dbname mysqlbinlog binlog.00000X | mysql -u username -p dbname gunzip -c dbname_incr_backup.sql.gz | mysql -u username -p dbname ``` 其,gunzip命令用于解压缩备份文件mysqlbinlog命令用于解析二进制日志文件,最后一个命令用于将增量备份文件恢复到新的MySQL服务器上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值