简介:它是开源免费的支持MySQL 数据库热备份的软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份。它不暂停服务创建Innodb热备份;
为mysql做增量备份;在mysql服务器之间做在线表迁移;使创建replication更加容易;备份mysql而不增加服务器的负载。
percona是一家老牌的mysql技术咨询公司。它不仅提供mysql的技术支持、培训、咨询,还发布了mysql的分支版本--percona Server。并围绕
percona Server还发布了一系列的mysql工具。
获得软件包:
官方站点:https://www.percona.com/
选择版本:
PERCONA XtraBackup
安装:
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.noarch.rpm //安装yum源
yum -y install percona-xtrabackup-24.x86_64 //安装percona
rpm -ql percona-xtrabackup-24 //查询安装结果,安装文件
一、完全备份流程
mkdir /xtrabackup/full -p //准备备份目录
innobackupex --user=root --password='Qwer@123' /xtrabackup/full //连接数据库,开始备份
ls /xtrabackup/full/ //查看备份目录。数据库,配置文件,日志文件
ls /xtrabackup/full/2018-08-01_00-00-02/
cat /xtrabackup/full/2018-08-01_00-00-18/xtrabackup_binlog_info //二进制日志位置
完全恢复流程
systemctl stop mysqld //停止数据库
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log
rm -rf /var/log/mysql-slow/slow.log //以上清理环境
innobackupex --apply-log /xtrabackup/full/2018-08-01_00-00-18/ //生成回滚日志,指定备份点
innobackupex --copy-back /xtrabackup/full/2018-08-01_00-00-18/ //恢复文件
ls /var/lib/mysql
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
mysql -uroot -p'Qwer@123' //以上登陆验证
二、 增量备份流程
准备工作:create database testdb;
use testdb;
create table test(id int);
insert into test values (1);
select * from test;
完整备份:周一
rm -rf /xtrabackup/* //清理上个例子的内容
date 09010000 //更新时间
innobackupex --user=root --password='Qwer@123' /xtrabackup
ll /xtrabackup/ // 2018-09-01_00-00-04
数据库里的记录是1
增量备份:周二
date 09020000 //更新时间
mysql -uroot -p'Qwer@123' -e 'insert into testdb.test values (2)'
innobackupex --user=root --password='Qwer@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2018-09-01_00-00-04
ls /xtrabackup/
增量备份:周三
date 09030000
mysql -uroot -p'Qwer@123' -e 'insert into testdb.test values (3)'
innobackupex --user=root --password='Qwer@123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2018-09-02_00-00-26
ls /xtrabackup/
周四。。周五。。周六
增量恢复流程:
systemctl stop mysqld
rm -rf /var/lib/mysql/*
周一:
du -sh /xtrabackup/ //看看备份目录
innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04
du -sh /xtrabackup/ //再看看备份目录
周二:
innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04 --incremental-dir=/xtrabackup/2018-09-02_00-00-26
恢复:
innobackupex --copy-back /xtrabackup/2018-09-01_00-00-06
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
恢复周三:
systemctl stop mysqld
innobackupex --apply-log --redo-only /xtrabackup/2018-09-01_00-00-04 --incremental-dir=/xtrabackup/2018-09-03_00-00-27
innobackupex --copy-back /xtrabackup/2018-09-01_00-00-04
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
mysql -uroot -p'Qwer@123' -e 'select * from testdb.test'
三、差异备份流程
跟增量备份流程一样,只是不管周二或周三或周四等,备份的都是周一的
周四: date 10040000
mysql -uroot -p'Qwer@123' -e 'insert into testdb.test2 values(4)'
innobackupex --user=root --password='Qwer@123' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2018-10-01_00-01-12
ll /xtrabackup/
du -sh /xtrabackup/
差异恢复流程:
systemctl stop mysqld
rm -rf /var/lib/mysql/*
innobackupex --apply-log --redo-only /xtrabackup/2018-10-01_00-01-12
innobackupex --apply-log --redo-only /xtrabackup/2018-10-01_00-01-12 --incremental-dir=/xtrabackup/2018-10-04_00-00-29
innobackupex --copy-back /xtrabackup/2018-10-01_00-01-12
chown -R mysql.mysql /var/lib/mysql/
systemctl start mysqld
结束