作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验
擅长主流数据Oracle、MySQL、PG、openGauss运维
备份恢复,安装迁移,性能优化、故障应急处理等
可提供技术业务:
1.DB故障处理/疑难杂症远程支援
2.Mysql/PG/Oracle/openGauss
数据库部署及数仓搭建
•••
微信:jem_db
QQ交流群:587159446
公众号:IT邦德
文章目录
前言
Xtrabackup 是由 Percona 公司提供的一款 MySQL 数据库备份恢复工具
1.PXB介绍
PXB(Percona XtraBackup)
Xtrabackup 是由 Percona 公司提供的一款 MySQL 数据库备份恢复工具,
是一款开源的能够对 Innodb 和 xtradb 存储引擎数据库进行热备的工具
(备份时不影响数据读写)
PXB备份的特点:
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;

2.PXB的安装
下载地址:
https://www.percona.com/downloads/
https://github.com/percona/percona-xtrabackup/tags
rpm -ivh percona-xtrabackup-80-8.0.35-30.1.el7.x86_64.rpm --nodeps --force
which xtrabackup
xtrabackup --version
常用选项:
--host 指定主机
--user 指定用户名
--password 指定密码
--port 指定端口
--databases 指定数据库
--incremental 创建增量备份
--incremental-basedir 指定包含完全备份的目录
--incremental-dir 指定包含增量备份的目录
--apply-log 对备份进行预处理操作
--defaults-file 指定默认配置文件,默认是读取/etc/my.cf

3.全备和恢复
3.1 全量备份
mkdir -p /bk/
xtrabackup -uroot -proot \
-S/var/lib/mysql/mysql.sock \
--backup --target-dir=/bk/full_$(date +%Y%m%d)
3.2 全备的恢复
第一步:
xtrabackup --prepare --target-dir=/bk/full
第二步:此时关闭数据库
systemctl stop mysqld
mysqladmin shutdown -uroot -proot
第三步:copy-back
[root@centos79 ~]# cd /var/lib
[root@centos79 lib]# tar -cf mysql.tar mysql
[root@centos79 lib]# mv mysql.tar /opt
[root@centos79 lib]# rm -rf /var/lib/mysql/*
xtrabackup --copy-back --target-dir=/bk/full --datadir=/var/lib/mysql
第四步:重启验证数据
重启MySQL
chown -R mysql:mysql /var/lib/mysql
mysqld_safe & --二进制环境
systemctl start mysqld --rpm环境
4.增量备份和恢复
需要注意的是,增量备份仅能应用于 InnoDB 或 XtraDB 表,
对于 MyISAM 表而言,执行增量备份时其实进行的是完全备份。
“准备”(prepare)增量备份与完全备份有着一些不同,
尤其要注意的是:
(1)需要在每个备份(包括完全和各个增量备份)上,
将已经提交的事务进行“重放”。“重放”之后,
所有的备份数据将合并到完全备份上。
(2)基于所有的备份将未提交的事务进行“回滚”。
在增量备份命令中,
--incremental-basedir 指的是上一次的增量备份所在的目录。
若是一级增量备份,则指向全备的目录

5.差异备份和恢复
说明:差异备份跟增量备份其实差不多,
只不过增量备份每次的参照物是前一个,而差异备份的参照物就是全备

6.压缩备份与还原
xtrabackup -uroot -proot \
-S/var/lib/mysql/mysql.sock \
--backup --parallel=4 --compress \
--compress-threads=4 --stream=xbstream \
> /bk/jeames_full_backup.qp \
--no-server-version-check
解释:
如果要加速压缩,可以使用--compress-threads=4 ,
使用四个线程同时进行压缩
compress就是压缩的命令,因为数据库的备份的数据比较大,
占用的空间也比较多,而压缩就能减少文件大小
解压工具是qpress
[root@centos79 opt]# tar -xvf qpress-11-linux-x64.tar
qpress
[root@centos79 opt]# mv qpress /usr/bin/qpress
[root@centos79 opt]# which qpress
/usr/bin/qpress
xbstream -x < /bk/jeames_full_backup.qp -C /bk
#解压操作
[root@centos79 opt]# rpm -ivh zstd-1.5.5-1.el7.x86_64.rpm
[root@centos79 opt]# zstd --version
*** Zstandard CLI (64-bit) v1.5.5, by Yann Collet ***
xtrabackup --parallel 4 --decompress --target-dir=/bk
find /bk/ -name '*.qp' | xargs rm -f --删除原来的压缩包
解压的原来的文件不会被删除,可以使用 --remove-original选项清除
#恢复操作
xtrabackup --prepare --target-dir=/bk/full
--此时关闭数据库 systemctl stop mysqld
xtrabackup --copy-back --target-dir=/bk/full --datadir=/var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
7.总结
Xtrabackup 是由 Percona 公司提供的一款 MySQL 数据库备份恢复工具,大家如果能熟练的掌握,必然是备份恢复的利器
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




