Xtrabackup是一个开源的免费的热备工具,在Xtrabackup包中主要有Xtrabackup和
innobackupex两个工具。其中Xtrabackup只能备份InnoDB和XtraDB两种引擎;
innobackupex则是封装了Xtrabackup,同时增加了备份MyISAM引擎的功能。
工具官方网站:https://www.percona.com/
一、工具的部署
(1)YUM安装
推荐使用yum安装,避免繁琐的依赖包问题
1,安装依赖包:
yum install libev
2,安装Percona 存储库:
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-
4/percona-release-0.1-4.noarch.rpm
查看版本清单:
yum list | grep percona
3,安装:
yum install percona-xtrabackup-24
(2)离线安装
由于部分安全考量较为严格的环境,没有外网可以使用rpm包或自建yum源的方式
进行,相对第一种方式,对依赖包不熟悉的情况下会较为麻烦。
1, 依赖包一般建议自行到http://rpmfind.net/查找下载
本次测试环境centos7所需依赖包链接:
http://mirror.centos.org/centos/7/extras/x86_64/Packages/libev-4.15-7.el7.x86_64.rpm
http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/perl-libs-5.16.3-
297.el7.x86_64.rpm
http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/perl-5.16.3-
297.el7.x86_64.rpm
http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/perl-Digest-1.17-
245.el7.noarch.rpm
http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/perl-Digest-MD5-2.52-
3.el7.x86_64.rpm
http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/perl-DBI-1.627-
4.el7.x86_64.rpm
http://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/perl-DBD-MySQL-4.023
-6.el7.x86_64.rpm
xtrabackup的rpm包链接:
https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-
XtraBackup-2.4.21/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.21-
1.el7.x86_64.rpm
2, 安装
安装前先部分依赖包是否已有,已有的无需再安装:
rpm -qa |grep -i [包名]
安装上述依赖包:
rpm -ivh libev-4.15-7.el7.x86_64.rpm
rpm -ivh perl-libs-5.16.3-297.el7.x86_64.rpm
rpm -ivh perl-5.16.3-299.el7_9.x86_64.rpm
rpm -ivh perl-Digest-1.17-245.el7.noarch.rpm
rpm -ivh perl-Digest-MD5-2.52-3.el7.x86_64.rpm
rpm -ivh perl-DBI-1.627-4.el7.x86_64.rpm --force --nodeps
rpm -ivh perl-DBD-MySQL-4.023-6.el7.x86_64.rpm
安装xtrabackup:
rpm -ivh percona-xtrabackup-24-2.4.21-1.el7.x86_64.rpm
二、xtrabackup全备
mkdir -p /opt/mysql/backup/
innobackupex --defaults-file=/opt/mysql/my.cnf --user=root --password=xxxx --
socket=/opt/mysql/mysql.sock /opt/mysql/backup/
–defaults-file= 不写时默认/etc/my.cnf
–socket 默认路径正常时可以不填
备份后的文件夹中有几个文件需要注意:
xtrabackup_binlog_info记录了binlog的position,若开启了GTID,也会将GTID取
出。在用于备份+binlog恢复或建立slave的场景里十分有用。
xtrabackup_checkpoints记录了此次备份的类型和lsn号,是否压缩。
xtrabackup_info则记录了备份工具的信息,时间,备份对象(是针对全实例还是某库
表),是否是增量,binlog位置等。
三、xtrabackup全备还原
①停掉数据库,并确认进程关闭:
systemctl stop mysqld
ps -ef |grep mysql
②移除原数据库存放目录所有内容:
mv /data/timatrix/mysql/mysqldata/ /data/timatrix/mysql/mysqldatabak
③还原:
在备份上应用日志:
innobackupex --defaults-file=/etc/my.cnf --apply-log /opt/mysql/backup/[全备份日
期目录]
将备份还原到 my.cnf 指定的 datadir 中:
innobackupex --defaults-file=/etc/my.cnf --copy-back /opt/mysql/backup/[全备份日
期目录]
注:这里my.cnf 如没有加入 datadir 配置项,会报错(Error: datadir must be
specified.)
④给数据目录重新授权:
chown -R mysql:mysql /data/timatrix/mysql/mysqldata/
⑤备份完成,启动数据库。
systemctl start mysqld
注:重新登陆时密码已变为备份数据库的密码。
可以看到增量备份的from_lsn 就是全量备份的to_lsn。可以确认正常。
五、增量备份还原
应用全备日志:
innobackupex --apply-log --redo-only /opt/mysql/backup/[全备日期目录] --use-memory=1G
合并增备日志到全备目录:
innobackupex --apply-log --redo-only /opt/mysql/backup/[全备日期目录] --incremental-dir=/root/backup/[增量备份日期目录] --use-memory=1G
停止数据库
systemctl stop mysqld
mv或rm数据库目录
将备份还原到datadir目录:
innobackupex --copy-back /root/backup/[全备日期目录]
chown -R mysql:mysql /data/timatrix/mysql/mysqldata/
systemctl start mysqld
–redo-only对增量备份进行合并
–use-memory增大使用系统内存量从而提高恢复速度。
-incremental-dir需要被合并进去的增量备份目录。