安装RPM包
yum localinstall percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
rpm -ql percona-xtrabackup-24-2.4.7-1.el7.x86_64
创建备份目录
mkdir /extrabackup
备份文件
innobackupex --user=root --password=Root123! /extrabackup/
查看备份文件
ls /extrabackup/2017-06-20_11-26-38 -hl
删除数据目录
rm -rf /var/lib/mysql/*
查看数据目录文件
ls /var/lib/mysql/
开始还原:
innobackupex --copy-back /extrabackup/
修改数据目录的属主和属组并启动MySQL服务:
chown -R mysql:mysql /var/lib/mysql/
systemctl restart mysqld
增备是备份上次以来发生变化的页面,通过增备可以减轻存储以及系统资源开销。增量备份主要针对于InnoDB,因为InnoDB采用了日志序列号(LSN)的方式。InnoDB的LSN是一个增长的序列,类似于Oracle的SCN,记录了InnoDB的变化情况。增量备份则是备份特定的LSN之后变化的情况。通过按序重组这些LSN即可将数据库恢复到故障点或任意时刻。
第一次增量备份
innobackupex --user=root --password=Root123! --incremental /extrabackup/ --incremental-basedir=/extrabackup/2017-06-20_11-26-38/
第二次增量备份
innobackupex --user=root --password=Root123! --incremental /extrabackup/ --incremental-basedir=/extrabackup/2017-06-20_13-08-11/
整合完整备份和增量备份:
对于增量备份的Prepare阶段,有2个需要注意的地方,一个是提交的事务需要replayed,一个未提交的事务需要rollback。
如果在Prepare阶段replay了已提交的事务以及回滚了未提交的事务,则后续的增量备份无法添加到当前全备。因此在Prepare阶段全备应使用--redo-only选项。
对于存在多次增量的情形,仅仅只有最后一个增量不需要使用--redo-only 选项。如果使用了的话,rollback将由服务器启动的时候来完成。
innobackupex --user=root --password=Root123! --apply-log --redo-only /extrabackup/2017-06-20_11-26-38/
innobackupex --user=root --password=Root123! --apply-log --redo-only /extrabackup/2017-06-20_11-26-38/ --incremental-dir=/extrabackup/2017-06-20_13-08-11/
innobackupex --user=root --password=Root123! --apply-log /extrabackup/2017-06-20_11-26-38/ --incremental-dir=/extrabackup/2017-06-20_13-10-08/
开始还原:
innobackupex --copy-back /extrabackup/2017-06-20_11-26-38/
修改数据目录的属主和属组,启动OK。
chown -R mysql.mysql /var/lib/mysqld/
小结
a、增量备份是基于增量或全备的基础之上完成的。
b、增量备份的基础是InnoDB引擎使用了LSN机制,非InnoDB引擎不存在增量备份的说法,每次都是全备。
c、对于增量备份的恢复期间需要对已提交的事务前滚,未提交的事务回滚。
d、增量备份的恢复应按照备份的顺利逐个逐个replay,需要使用--apply-log --redo-only选项。
e、仅仅最后一个增量备份不需要使用--redo-only选项。
f、如果要做完全恢复或时点恢复,需要结合binlog来实现。