MySQL 增量备份与还原

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 增量备份与还原相关的知识,希望对你有一定的参考价值。

说明:
所谓增量备份,就是备份自上一次备份之后增加或改变的文件或内容。然而MySQL没有提供直接的增量备份方法,但是却可以通过MySQL的二进制日志间接实现增量备份。下面有关操作方法进行测试。
.
.
实验环境:装有MySQL 5.7 数据库的CentOS7虚拟机一台
.
.
实验步骤如下:
.
.
1 .进入配置文件添加二进制日志
vim /etc/my.cnf
[mysqld]
在其中插入二进制日志
log_bin=mysql-bin #二进制日志

技术分享图片
.
.
2 . 然后重启数据库,到日志文件目录下查看一下
技术分享图片
.
.
3 . 新建数据库,并在其中新建数据表,写入数据
技术分享图片
.
.
4 .重新生成一个日志文件,这样刚才的操作步骤都会保存在第一个二进制文件中
mysqladmin -u root -p flush-logs#重新生成二进制文件

技术分享图片
.
.
5 . 将刚才新建的数据库删除,然后使用恢复命令恢复数据库
mysqlbinlog --no-defaults mysql-bin.000001 | mysql -u root -p #日志文件恢复

技术分享图片
技术分享图片
.
.
6 . 可以查看到数据库已经被恢复好
技术分享图片
.
.
7 .接下来,测试误操作之后的恢复(两种方法,一是利用时间点,二是利用位置点)先进行时间点的操作
在表中插入数据
下一步,删除表中一条数据(误操作)
然后再插入一条数据
这样,误操作的一条命令已经被覆盖

技术分享图片
.
.
8 . 重新生成一个二进制日志
mysqladmin -u root -p flush-logs#创建新日志

技术分享图片
.
.
9 . mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002#64位解码查看日志文件,防乱码
在其中需要找到两个时间点
(1) 删除数据的时间点
(2) 删除之后下一步正确操作时间点

技术分享图片
技术分享图片
.
.
10 . 找到两个时间点之后,用这两个时间点进行恢复
mysqlbinlog --no-defaults --stop-datetime=‘2018-09-03 16:38:08‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p#恢复到错误时间点
mysqlbinlog --no-defaults --start-datetime=‘2018-09-03 16:39:08‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p#从下一个正确时间点恢复

技术分享图片
.
.
11 . 这样被误删除的数据就恢复好了
技术分享图片
.
.
12 . 下面根据位置点,再进行恢复
同样把数据恢复到误删除

技术分享图片
.
.
13 . mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 #64位解码查看日志文件,防乱码
找到错误点执行的命令后,复制上一次可正确执行的位置(at后面就是位置号)
然后找到下一次可执行的命令,同样复制上一次可正确执行的位置

技术分享图片
技术分享图片
.
.
14 . 利用位置点进行恢复
mysqlbinlog --no-defaults --stop-datetime=‘1950‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p#恢复到错误时间点
mysqlbinlog --no-defaults --start-datetime=‘2223‘ /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p#从下一个正确时间点恢复
最后查看结果,测试完成

技术分享图片

以上是关于MySQL 增量备份与还原的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 增量备份与还原

MySQL备份与还原

mysql全备增量备份与还原

MySQL之数据备份与还原

通过innobackupex实现对MySQL的增量备份与还原

MySQL的备份与还原,非常规备份,全量备份,增量备份