1.下载二进制版本
wget
https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.11/binary/tarball/percona-xtrabackup-2.4.11-Linux-x86_64.libgcrypt145.tar.gz
解压缩
tar xzf percona-xtrabackup-2.4.11-Linux-x86_64.libgcrypt145.tar.gz
mv percona-xtrabackup-2.4.11-Linux-x86_64 /usr/local/xtrabackup
vi /etc/profile
增加
export PATH=$PATH:/usr/local/xtrabackup/bin
source /etc/profile
或者
echo "export PATH=$PATH:/usr/local/xtrabackup/bin" >> /etc/profile
source !$
2. 全量备份
命令格式:
innobackupex --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
innobackupex --defaults-file=/tmp/other-my.cnf --user=DBUSER --password=DBUSERPASS /path/to/BACKUP-DIR/
例子:
innobackupex --defaults-file=/etc/my.cnf -uroot -p123456 -S /var/lib/mysql/mysql.sock /data/backup/
备份文件路径: /data/backup/2018-05-23_13-58-12
3.测试全量恢复
命令格式:
innobackupex --apply-log /path/to/BACKUP-DIR #perpare
innobackupex --copy-back /path/to/BACKUP-DIR #恢复
库中删除任意表,停掉数据库
systemctl stop mariadb
准备一个全量备份,因为备份时数据是在不同时间备出来的,没有一个完整的序列。
innobackupex --apply-log /data/backup/2018-05-23_13-58-12
成功后,恢复全量备份的数据
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/2018-05-23_14-28-04/
#--rsync一次性复制全部文件
4.增量备份
命令格式:
#首次增量
innobackupex --incremental /data/backups --incremental-basedir=BASEDIR
#第二次增量
innobackupex --incremental /data/backups --incremental-basedir=INCREMENTAL-DIR-1
第一次增量
innobackupex --defaults-file=/etc/my.cnf -uroot -p123456 -S /var/lib/mysql/mysql.sock --incremental /data/backup/inc --incremental-basedir=/data/backup/2018-05-23_14-53-17 --parallel=2
第二次增量
innobackupex --defaults-file=/etc/my.cnf -uroot -p123456 -S /var/lib/mysql/mysql.sock --incremental /data/backup/inc --incremental-basedir=/data/backup/inc/2018-05-23_15-04-04 --parallel=2
#--incremental-basedir 基于哪次备份做增量
5.增量备份的恢复
命令格式:
step1:
innobackupex --apply-log --redo-only BASE-DIR
step2:
innobackupex --apply-log --redo-only BASE-DIR --incremental-dir=INCREMENTAL-DIR-1\
step3:
innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2
step4:
innobackupex --apply-log BASE-DIR
step5:
innobackupex --copy-back BASE-DIR
prepare一份全量备份
innobackupex --apply-log --redo-only /data/backup/2018-05-23_14-53-17/
#redo-only 最后一份增量不用加这个参数,具体意义待确认
应用第一份增量到全量备份文件
innobackupex --apply-log --redo-only /data/backup/2018-05-23_14-53-17/ --incremental-dir=/data/backup/inc/2018-05-23_15-04-04
应用第二份增量到全量文件(这里是最后一份了,不加redo-only)
innobackupex --apply-log /data/backup/2018-05-23_14-53-17/ --incremental-dir=/data/backup/inc/2018-05-23_15-06-56
重新prepare一次全量备份文件
innobackupex --apply-log /data/backup/2018-05-23_14-53-17/
#清空mysql的数据存储路径
恢复备份
innobackupex --defaults-file=/etc/my.cnf --copy-back --rsync /data/backup/2018-05-23_14-53-17/
修改数据文件夹权限
chown -R mysql.mysql /var/lib/mysql
chmod 755 -R /var/lib/mysql
systemctl start mariadb
登入数据库查看,数据已经恢复。
注:在最新版本中,
The
innobackupex
program is a symlink to the
xtrabackup
C
program.且innobackupex在未来版本中全被弃用.
xtrabackup命令使用
1.全备命令
xtrabackup -uroot -p123456 -S /var/lib/mysql/mysql.sock --backup --target-dir=/data/xbak
2. 全备恢复
xtrabackup --prepare --target-dir=/data/xbak
xtrabackup --copy-back --target-dir=/data/backups/
3.增量备
xtrabackup --backup --target-dir=/data/backups/base
xtrabackup --backup --target-dir=/data/backups/inc1 \--incremental-basedir=/data/backups/base
xtrabackup --backup --target-dir=/data/backups/inc2 \--incremental-basedir=/data/backups/inc1
4.增量恢复
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base
xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base \--incremental-dir=/data/backups/inc1
xtrabackup --prepare --target-dir=/data/backups/base \--incremental-dir=/data/backups/inc2
xtrabackup --prepare --target-dir=/data/backups/base
xtrabackup --copy-back --target-dir=/data/backups/base