xtrabackup 物理备份+binlog

完整备份

创建备份目录:#mkdir /back/full
备份:#innobackupex --user=root --password='123' /back/full

完整备份恢复流程

关闭数据库:#systemctl stop mysqld
清理环境:#rm -rf /var/lib/mysql/*
#rm -rf /var/log/mysqld/log

恢复之前的验证恢复

#innobackupex --apply-log /back/full/完整备份目录

确认数据库目录

#cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql

恢复数据

#innobackupex --copy-back /back/full/完整备份目录

修改权限

chown -R mysql.mysql /var/lib/mysql/*

启动数据库

#systemctl start mysqld

增量备份

第一天:完整备份

#innobackupex --user=root --password='123' /back/full1
添加数据进库

第二天:增量备份

#innobackupex --user=root --password='123' --incremental /back/full1 --incremental-basedir=/back/full1/完整备份目录

.........
.........

增量备份恢复流程

停止数据库

#systemctl stop mysqld

清理环境

#rm -rf /var/lib/mysql/*
#rm -rf /var/log/mysqld.log

依次重演回滚

第一天的数据
#innobackupex --apply-log --redo-only /back/full1/完整备份目录
第二天
#innobackupex --apply-log --redo-only /back/full1/完整备份目录 --incremental-dir=/back/full1/增量备份目录
重复之前的操作

恢复数据

#innobackupex --copy-back /back/full1/回滚之后的完整备份目录

修改权限

#chown -R mysql.mysql /var/lib/mysql

重启数据库

#systemctl restart mysqld

差异备份

第一天:完整备份

#innobackupex --user=root --password='123' /back/full2
插入数据

第二天:差异备份

#innobackupex --user=root --password='123' --incremental /back/full2 --incremental=basedir=/back/full2/完整备份目录
..........
..........

差异备份恢复流程

停止数据库

#systemctl stop mysqld

清理环境

#rm -rf /var/lib/mysql/*
#rm -rf /var/log/mysqld.log

恢复全量的redo log

#innobackupex --apply-log --redo-only /back/full2/完全备份目录

恢复差异的redo log

#innobackupex --apply-log --redo-only /back/full2/完全备份目录 --incremental-dir=/back/full2/某个差异备份

复制数据文件

#innobackupex --copy-back /back/full2/回滚之后的完整备份目录

修改权限

#chown -R mysql.mysql /var/lib/mysql

##启动数据库

#systemctl start mysqld