份的prepare: $ innobackupex --apply-log --redo-only /data/backup/all_backup/ --incremental-dir=/data/backup/incremental-dir-1 再对第二次的增量备份prepare,注意,第二次的增备是最后一次,所以不需要加上--redo-only参数: $ innobackupex --apply-log /data/backup/all_backup/ --incremental-dir=/data/backup/incremental-dir-2 最后将两次增量备份和全备做一次合并: $ innobackupex --apply-log /data/backup/all_backup/ 恢复过程,这个和全量恢复没有区别: 停掉mysqld $ mysqladmin -uroot -p shutdown $ ps -ef|grep mysql root 3533 3081 0 17:05 pts/1 00:00:00 grep mysql 移除datadir $ mv /data/mysql_data /data/mysql_data.bk2 恢复数据 $ innobackupex --copy-back /data/backup/all_backup/ 修改新datadir的权限 $ chown mysql:mysql -R /data/mysql_data 启动 $ mysqld & 检查一下,全备和两次增备的内容都已经被恢复回来了,也就是最后一次数据的状态:
至此,增量备份&恢复完成。
〇 总结一下xtrabackup备份及恢复全过程: 1、备份操作,需要提供具有足够权限的MySQL用户,并且mysqld启动用户需要对datadir有rwx的权限。 2、prepare,将未提交的事务回滚,将已提交的事务写入数据文件。 3、停止mysqld服务 4、mv data/ data_bak_.../ 5、copyback回去 6、修改权限新的datadir权限 7、启动服务 当然,上述所有的备份对象,都是针对整个MySQL实例。 至于如何做针对库表备份与还原,如何压缩,如何克隆slave等,下次再写。
|