说明:
所谓增量备份,就是备份自上一次备份之后增加或改变的文件或内容。然而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#从下一个正确时间点恢复
最后查看结果,测试完成
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。