innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=你的密码 --incremental --incremental-basedir=/data/backup/incremental/2019-04-19_21-35-33 /data/backup/incremental
第三次增量备份产生的目录文件为 /data/backup/incremental/2019-04-19_21-38-16
再次插入2笔验证数据,用来验证第四次增量备份。
生成第四个增量备份
innobackupex --port 3306 --socket /tmp/mysql_3306.sock --user=root --password=你的密码 --incremental --incremental-basedir=/data/backup/incremental/2019-04-19_21-38-16 /data/backup/incremental
第四次增量备份产生的目录文件为 /data/backup/incremental/2019-04-19_21-40-02
最后一次插入2笔验证数据
我们希望还原后的数据库是 刚刚作为第三次完整增量备份的数据库状态。
(此时T_full_table 表的数据,应该为 1(全量),2,3 (一增),21,22 (二赠),31,32 (三赠))
2. 增量恢复的Prepare阶段1) 在全量备份上执行
innobackupex --apply-log --redo-only /data/backup/full/2019-04-19_21-28-32
2) 在第一个增量备份上执行 (增量备份产生的子目录是 2019-04-19_21-30-11,前面完整备份的目录是 /data/backup/full/2019-04-19_21-28-32)
innobackupex --apply-log --redo-only --incremental-dir=/data/backup/incremental/2019-04-19_21-30-11 /data/backup/full/2019-04-19_21-28-32
3) 在第二个增量备份上执行 (增量备份产生的子目录是 2019-04-19_21-35-33,前面完整备份的目录是 /data/backup/full/2019-04-19_21-28-32)
innobackupex --apply-log --redo-only --incremental-dir=/data/backup/incremental/2019-04-19_21-35-33 /data/backup/full/2019-04-19_21-28-32
4) 在第二个增量备份上执行 (增量备份产生的子目录是 2019-04-19_21-38-16 ,前面完整备份的目录是 /data/backup/full/2019-04-19_21-28-32)
innobackupex --apply-log --incremental-dir=/data/backup/incremental/2019-04-19_21-38-16 /data/backup/full/2019-04-19_21-28-32
3. 增量备份的恢复阶段通过prepare阶段,base 目录包含了所有数据。在恢复时,只需要通过以下操作即可。
innobackupex --datadir=/data/mysql3307/data --copy-back /data/backup/full/2019-04-19_21-28-32
在数据库实例启动前,需要修改文件的所有权,执行指令如下
chown -R mysql:mysql /data/mysql3307/data
4. 开启实例,进行验证恢复后的数据,正是我们想要的数据,测试到达了预期效果。
注:现在xtrabackup版本升级到了2.4,相比之前的2.1有了比较大的变化:innobackupex 功能全部集成到 xtrabackup 里面,只有一个 binary,另外为了使用上的兼容考虑,innobackupex作为 xtrabackup 的一个软链,即xtrabackup现在支持非Innodb表备份,并且Innobackupex在下一版本中移除,建议通过xtrabackup替换innobackupex。