简介
增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。
目的
解决完全备份中时间长、恢复慢的问题,采取了增量备份
特点
优:无重复数据,备份量不大,时间短
缺:需要上次完全备份及完全备份后的增量备份才能恢复,需对增量备份逐个反复恢复,操作繁琐
实现方式
通过mysql的二进制日志间接实现增量备份:
二进制日志保存了所有更新或可能更新的数据
二进制日志在mysql启动时开始记录,且会重新创建新的日志文件
需定时执行flush logs方法重新创建日志,生成二进制文件序列
实验环境:
安装了mysql5.7数据库的一台centos7虚拟机
操作过程:
一、增量备份
1、在配置文件中添加二进制日志
vim /etc/my.cnf
[mysqld] #在此模块下添加
log-bin=mysql-bin #二进制日志
2、重启服务,并查看二进制日志
systemctl restart mysqld.service
cd /usr/local/mysql/data/
mysqlbinlog --no-defaults mysql-bin.000001
3、在数据库自由创建数据库、表,作为实验模板
4、对school数据库进行完全备份
mysqldump -uroot -pabc123 school > /opt/school.sql
5、刷新日志,生成新的日志,注意:之前数据库的操作写入编号为000001的日志中,新生成的000002的日志为空
mysqladmin -uroot -pabc123 flush-logs #刷新日志
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001 #查看000001日志
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 #查看000002日志
#--base64-output=decode-rows -v:避免文件中乱码,前面的查看命令也可以使用
6、新添加mysql数据库操作,然后刷新日志,进行增量备份
use school;
mysql>indert into info (id,name,score) values (3,'aaa',78);
mysql>delete from info where name='tom'; #误操作
mysql> insert into info (id,name,score) values (4,'bbb',64);
mysqladmin -uroot -pabc123 flush-logs #刷新日志,生成000003
#此次增量备份已记录到000002日志文件中
7、删除info表
mysql -uroot -pabc123 -e 'use school;drop table info;'
8、恢复完全备份,然后恢复增量备份
mysql -uroot -pabc123 school < /opt/school.sql #完全备份还原
mysqlbinlog --no-defaults mysql-bin.000002 | mysql -uroot -p
那么,此处暴露出一个问题,如果出现误操作,还原备份时就会出现错误,并不能实现理想的备份,达到真正的目的。此时,就需要断链恢复(属于恢复增量备份的特殊用法),即在还原时只恢复正确的数据库操作。
二、断链恢复
在操作断链恢复前,需要还原到未进行增量备份还原的状态,如图
基于时间点
2018-09-04 16:43:52 错误操作时间 (开头加载到此时间点结束)
2018-09-04 16:44:32 正确操作时间 (从此时间点再次开始加载) 从此时间点再次开始加载
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 #查看000002日志
mysqlbinlog --no-defaults --stop-datetime='2018-09-04 16:43:52' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p
mysqlbinlog --no-defaults --start-datetime='2018-09-04 16:44:32' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p
基于位置点
at 565 上一次正确执行位置 --stop-position
at 667 下一次正确执行位置 --start-position
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002 #查看000002日志
mysqlbinlog --no-defaults --stop-position='565' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p
mysqlbinlog --no-defaults --start-position='667' /usr/local/mysql/data/mysql-bin.000002 | mysql -uroot -p
我想在系统中使用增量备份作为主要的cassandra备份类型,但我有一些误解: 从增量备份进行还原的一种方法对我有用 - 只需从备份文件夹复制到表文件夹,这是正确的方法吗? 我可以以某种方式备份表\键空间参数,如索引/replica_factor等吗? 谢谢。
本文向大家介绍用Python写脚本,实现完全备份和增量备份的示例,包括了用Python写脚本,实现完全备份和增量备份的示例的使用技巧和注意事项,需要的朋友参考一下 需求: 在/root/backup下面有两个文件夹dst和src。要求在周一的时候进行完全备份,其余日子进行增量备份。从src备份到dst。 思路及关键点: 建立一个文件,以字典方式记录src的文件名以及文件对应的md5的值 完全备份的
Shell 脚本定期备份 mysql_config_editor — MySQL Configuration Utility 需要配置下mysql_config_editor mysql_config_editor set --login-path=client --host=localhost --user=localuser --password backup_parent_dir
本文向大家介绍C#实现MySQL命令行备份和恢复,包括了C#实现MySQL命令行备份和恢复的使用技巧和注意事项,需要的朋友参考一下 MySQL数据库的备份有很多工具可以使用,这两天写了一个使用C#调用MYSQL的mysqldump命令完成MySQL数据库的备份与恢复的小工具 先来说一下mysqldump命令备份MySQL数据库的使用方法 直接将MySQL数据库压缩备份 备份MySQL数据库某个(些
本文向大家介绍详解Mysql之mysqlbackup备份与恢复实践,包括了详解Mysql之mysqlbackup备份与恢复实践的使用技巧和注意事项,需要的朋友参考一下 一、mysqlbackup简介 mysqlbackup是ORACLE公司也提供了针对企业的备份软件MySQL Enterprise Backup简称,是MySQL服务器的备份实用程序。它是一个多平台,高性能的工具,具有丰富的功能,例
本文向大家介绍MySQL数据库备份恢复实现代码,包括了MySQL数据库备份恢复实现代码的使用技巧和注意事项,需要的朋友参考一下 数据库的备份 数据恢复 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。