本次使用的数据库mysql-5.7.23。恢复数据的数据库必须是干净的数据库。新的或者删除干净数据
==xtrabackup软件包获取
①xtrabackup软件包是由percona公司提供,可以去官网下载:https://www.percona.com/官网去下载。
②这里使用的是percona-xtrabackup-24.x86_64版本。
wget http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm 下载yum源
yum -y install percona-release-0.1-3.noarh.rpm 安装yum源
yum -y install percona-xtrabackup-24.x86_64 安装xtrabackup
rpm -qa | grep percona-xtrabackup-24 查询安装结果
==完全备份
备份
innobackupex --user=xtrabackup --password=xtrabackup /xtrabackup/full
恢复
将备份先生成回滚日志:innobackupex --apply-log /xtrabackup/full/filename
恢复数据:innobackupex --copy-back /xtrabackup/full/filename
注意此种方法不会恢复数据到被破坏的时候,只会恢复到备份的时候。中间的恢复过程一般通过二进制日志来完成。
==增量备份和差异备份的介绍
增量备份是将第一次备份作为基准,之后每一次分备份都需要基于前一次备份,当要恢复数据时,可以把每一次的数据进行分段的恢复(通俗的来说,第一次之后的每次备份,都是和前一次的比较,前一次备份之后新写入数据库的数据才会备份)。
差异备份同样需要把第一次作为整个备份的基准,之后每一次的备份都是基于第一次的备份来实现的(通俗的来说,第一次之后的每一次备份都是和第一次的备份做比较,把第一份之后写入的数据备份下来)。

第一次备份1,2,3,当第二次备份时,写入了4,5,6,就只需要备份4,5,6即可,第三次备份时,写入了7,8,,则第三次只需要备份7,8就可以了。

第一次备份1,2,3,当第二次备份时,写入了4,5,6,就只备份4,5,6,第三次备份值写入了7,8,但是由于要和第一次备份比较,所以还要从4开始备份,此时备份4,5,6,7,8,同样的,第四次备份,也是从4开始备份到目前所在的位置。
==增量备份
备份(数据库开启)
第一次:innobackupex --user=xtrabackup --password=xtrabackup /xtrabackup/full 第一次备份文件:/xtrabackup/full/filename1
第二次:innobackupex --user=xtrabackup --password=xtrabackup --incremental /xtrabackup/full --incremental-basedir=/xtrabackup/full/filename1 第二次备份文件:/xtrabackup/full/filename2
第三次:innobackupex --user=xtrabackup --password=xtrabackup --incremental /xtrabackup/full --incremental-basedir=/xtrabackup/full/filename2 第三次备份文件:/xtrabackup/full/filename3
恢复(数据库关闭且干净)(恢复第三次的)
生成回滚日志:innobackupex --apply-log --redo-only /xtrabackup/full/filename1
第二次的加到第一次上:innobackupex --apply-log --redo-only /xtrabackup/full/filename1 --incremental-dir=/xtrabckup/full/filename2
第三次的加到第一次上:innobackupex --apply-log --redo-only /xtrabackup/full/filename1 --incremental-dir=/xtrabackup/full/filename3 注意:此时已经将第二次加到第一次上了,此时的/xtrabackup/full/filename1是第一次和第二次的总和。并不是只把第三次加第一次上了。
innobackupex --copy-back /xtrabackup/full/filename1
chown -R mysql.mysql /var/lib/mysql/ (/var/lib/mysql/为数据库数据存储的位置)
启动数据库就可以了。
==差异备份
备份(数据库开启)
第一次:innobackupex --user=xtrabackup --password=xtrabackup /xtrabackup/full 第一次备份文件:/xtrabackup/full/filename1
第二次:innobackupex --user=xtrabackup --password=xtrabackup --incremental /xtrabackup/full/ --incremental-basedir=/xtrabackup/full/filename1 第二次备份文件:/xtrabackup/full/filename2
第三次:innobackupex -user=xtrabackup --password=xtrabackup --incremental /xtrabackup/full/ --incremental-basedir=/xtrabackup/full/filename1 第三次备份文件:/xtrabackup/full/filename3
恢复(数据库关闭且干净)(恢复第三次的)
生成回滚日志:innobackupex --apply-log --redo-only /xtrabackup/full/fiename1
将第三次直接添加到第一次上:innobackupex --apply-log --redo-only /xtrabackup/full/filename1 --incremental-dir=/xtrabackup/full/filename3 此时就不需要加第二次的了,因为每次备份都是基于第一次备份的。
innobackupex --copy-back /xtrabackup/full/filename1
chown -R mysql.mysql /var/lib/mysql (/var/lib/mysql/为数据存储的位置)
启动数据库即可。