概念:
xtrabackup是一种物理备份工具,通过协议连接到mysql服务端,然后读取并复制innodb底层的"数据块",完成所谓的"物理备份"。
支持对innodb进行热备、增量备份、差量备份。
支持对myisam进行温备,因为在备份myisam表时,会对myisam表添加读锁,而且不能对myisam表进行增量备份,每次备份myisam数据都是全量,即使名义上是增量,但是实际上仍然是全量。
————————————————
完全备份+两次增量备份 --> 新主机恢复
环境:
CentOS7.4 x 2
MariaDB-5.5.5
Xtrabackup工具包
两台主机分别安装Xtrabackupwget
https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
-----------------------------------------------
yum install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm -y
#Xtrabackup包依赖于epel源一些工具包,所以使用yum安装。
注意:如果无法使用yum安装的话使用如下命令
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
(安装过程中如果出现被依赖 方法:去官网下载被依赖的包!!!)
一、准备工作
更新下系统:
yum -y update
下载XtraBackup rpm包
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
安装依赖包:
rpm -Uvh http://rpmfind.net/linux/epel/6/x86_64/Packages/l/libev-4.03-3.el6.x86_64.rpm
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-Digest-MD5
安装XtraBackup
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
二、安装Percona-XtraBackup-2.4.9
#rpm -ivh percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm
安装过程遇到libev.so.4问题
(1)解决 libev.so.4()(64bit)
可以自行去http://rpm.pbone.net搜索系统所需要的rpm包进行下载安装
#wget ftp://ftp.pbone.net/mirror/apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/libev-4.15-1.el6.rf.x86_64.rpm
#rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
————————————————
当前数据装态:
完全备份数据库:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=chen123 /backup/
出现completed OK!表示备份完成!
备份的数据:
三、修改数据,并执行第一次增量备份
mysql> create database 1st;
修改后的数据:
进行增量备份:
mkdir /backup/up1
innobackupex --defaults-file=/etc/my.cnf --user=root --password=chen123 --incremental --incremental-basedir=/backup/2018-02-27_14-44-54 /backup/up1
第一次增量备份的数据:
四、再次修改数据,进行第二次增量备份
mysql> create database 2st;
mysql> create database Xtrabackup_test;
进行第二次增量备份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=chen123 --incremental --incremental-basedir=/backup/up1/2018-02-27_14-48-24 /backup/up2/
三次备份后的数据:
五、恢复前准备
1.将备份数据和/etc/my.cnf文件拷贝到另一台主机
scp -r /backup/ 192.168.1.4:/root
scp /etc/my.cnf 192.168.1.4:/etc/
2.不要启动数据库,开始恢复前的准备工作;
#回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态:
innobackupex --apply-log --redo-only /root/2018-02-27_14-44-54/
3.将增量备份整合进全备份中:
innobackupex --apply-log --redo-only /root/2018-02-27_14-44-54/ --incremental-dir=/root/up1/2018-02-27_14-48-24
innobackupex --apply-log --redo-only /root/2018-02-27_14-44-54/ --incremental-dir=/root/up2/2018-02-27_14-50-03
六、开始恢复
1.确保数据目录为空
rm -fr /var/lib/mysql
2.拷贝文件到数据目录
innobackupex --copy-back --datadir=/var/lib/mysql /root/2018-02-27_14-44-54/
7、启动数据库
修改数据库目录权限:
chown -R mysql.mysql /var/lib/mysql
启动数据库:
systemctl start mariadb