一、增量备份介绍
只对与全备的数据和现在线数据库的那部分差异数据的备份。
1、基于全备的增量备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password="RU5DMMBN4XL1BD3mp/Vy/uep3CvfXSXOgaqeC8fLYemRWgc/64rRpd2o94GpIOOPEmKj0KH9MEE2lOmKA+ncf83cukHIyrsGbHreEpAmqd128OJeQfsCkcML6kxzrL2BQJQd5fp/XiEpswF7/U05uksoAQ5RzxzQwI/EHnK50KlhVlzYCeMGycXO1fCpF5Sa7djZN44J9ICxFbHsmpgPrNn9J94Sc7M/piLWJfRHIcqBEAaAar1YfNHn5A4VoZbiYn0ef6JGnrTo/7w0+TmPQq2y2wTi3e+WB8CgtxEYhcW/+T4CwjLiUC1LlgKqL2jxBRsI/io1wXf/LU4PafxbaenMJxjRXUGqmcdyyc0tLrX6rEgBGYcAw5Uxx7BmOPHMwMqmTAR+HFJc2puOx4D8yVpfR6nAURvsampLqLSyQqhOny7H" --socket=/data/mysql/mysql.sock --incremental /bak/add/ --incremental-basedir=/bak/full/2017-05-12_22-57-05/ --parallel=2
2、基于增量备份的增量备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password="RU5DMNgwJ6G0fD6oUDVwUmiCrbsMSNOYFpvwzdtdn0US+8HkwzDHj6mm0T/wS0HD3VWgDy/yX0mIJzBRR8fGv0ivGNxnyV8GVAUbrRfX/v999w56wTKDDxLP1M+wCm/UBiR2CqbNTj5w5vwROF2IGC7SM0OgdiFXAwVU/VyVTobe3l0FyjlW481ULg6scnnfrBkYsVQnATyO9dQscaQnhIDrdkjq76o2fF7pFFue6G9CIxleBBisuZR22yI7s2RoU52Yb4UibeYffbCcXcckEAGmxuIZwUPsKuLLuxDt2zPG1nVHuSZfpITQReVEV4eE9/GdThBHE2T0Fb6j4gq812787sQ9CT4Ex4gENFJYdLxGxktzTYG+PrLq0xmNiqeUSVlNpwerAm8A5OiOLbpf2YGiPf/fYsXKy+rss4SQCQVbug8J" --socket=/data/mysql/mysql.sock --incremental /bak/add/ --incremental-basedir=/bak/add/2017-05-12_23-11-39/ --parallel=2
说明:
--incremental-basedir:基准目录
--incremental :增量备份的目标目录
--parallel=2 :开启两个进程
3、增量备份恢复
增量备份的恢复大体为3个步骤
*恢复完全备份
*恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份去掉--redo-only参数)
*对整体的完全备份进行恢复,回滚那些未提交的数据
恢复完全备份(注意这里一定要加--redo-only参数,该参数的意思是只应用xtrabackup日志中已提交的事务数据,不回滚还未提交的数据)
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /bak/full/*
3.1 将基于全备的增量备份1应用到完全备份
innobackupex --defaults-file=/etc/my.cnf --apply-log --redo-only /bak/full/2017-05-12_22-57-05/ --incremental-dir=/bak/add/2017-05-12_23-11-39/
3.2 将基于增量备份1的增量备份2应用到完全备份(注意恢复最后一个增量备份时需要去掉--redo-only参数,回滚xtrabackup日志中那些还未提交的数据)
innobackupex --defaults-file=/etc/my.cnf --apply-log /bak/full/2017-05-12_22-57-05/ --incremental-dir=/bak/add/2017-05-13_12-02-02/
3.3 把所有合在一起的完全备份整体进行一次apply操作,回滚未提交的数据:
innobackupex --defaults-file=/etc/my.cnf --apply-log /bak/full/*
3.4、关闭数据库:Servcie mysqld stop
3.5 恢复(要保证mysql是关闭状态):
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /bak/full/*
3.6 授权:
cd /data/mysql chown -R mysql:mysql *
说明:不授权的话,.sock 生成不了,导致mysql启动报错。
3.7 验证:
开启数据库:Servcie mysqld start
二、自动备份、还原
参考此篇文章
http://blog.csdn.net/yangzhawen/article/details/44941435
三、获得额外知识
常用同步命令
参考文章:rsync为同步的命令详解 http://www.cnblogs.com/maxincai/p/5142245.html
获取文件:
rsync -avz root@192.168.1.62:/bak/ /bak/other/
推送文件:
rsync -avzP -e 'ssh -p 22' /bak/full root@192.168.1.62:/bak/
生产环境MySQL的正确开启、关闭的姿势:
mysqld_safe --defaults-file=/etc/my.cnf > /dev/null & mysqladmin -uroot -pRU5DMDepnP4hk94BQCzIE8C7MBmd1dVFuarEDThD3bZMk6ltrMK55SRaobMcI3XQ6nQSL7+6er1Vp+LmxWEJ1xJzdIdBeBGiu9gUKgBmfoHhfg5FZzAlC0J3v6eT7xa7gIntqn9Jq+gBozXx50gXPrkriJf8xsveVasOV5Jc4EvevE9ZfZ4KFdQa78yrmAf7xu6UsLGKRnkfrekXV8uCnhUIDfKMkhr/AWBxtHAJRlrxEeH5SSeYctrFRJsXlG1BCYpudnZ9gRu+DBpj8SGpe3JRqhuqsbwsfi4nX7cjNMCr5lYzYTTOMYdwLN2/PWDrM5TFPqXjRv/i53jnvXHNJFkElc204Slhp+FEPV3K/RUdpvP3Q2eJajmiSatts09o4fV7Ig/SRFjhG0gYSldWyVYOZgGQRM1wO2i2CWbVDA+gLXah shutdown
shell格式不正确: 通过 vi 文件 :set ff=unix :wq 即可解决!
四、总结备份策略
普通备份策略:一天进行一次物理全备,一周进行一次逻辑全备份。
精密的备份策略:如果架构比较复杂,应用比较多,有钱的话,可以针对一台服务器就跟着一个备份服务器。
如果主从复制技术保证高可用,不出错,可以在权重比较低的从库机器上进行备份策略。
策略: 每天凌晨一点进行一次物理全备,每隔1个小时进行一次物理增量备份。
间隔3天在主库进行一次逻辑全备,并同步到备份机器上。
说明:全面监控备份时间段的压力,如果压力过大,需要及时调解策略和者配置文件,避免因为备份造成数据库异常,从而影响业务。
如果上述的总结您感觉比较垃圾,不喜勿pen~。
重点说明:备份策略n多种,看哪种安全,稳定,又经济,任何故障都可以恢复的需要优先考虑。