暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

xtrabackup多种格式备份(xbstream、lz4、zstd)

原创 冯晓宇 2023-04-20
3286

适用范围

mysql实例备份恢复场景

方案概述

Percona XtraBackup是一个开源热备份工具,适用于MySQL数据库备份,在备份期间不会锁定数据库,使用这个工具有以下优点:

  • 快速可靠地完成备份
  • 备份期间不间断的事务处理
  • 节省磁盘空间和网络带宽
  • 自动备份验证
  • 由于恢复时间更快,正常运行时间更长

Percona XtraBackup支持压缩备份。可以使用xbstream压缩或lz4、zstd格式压缩备份,从 Percona XtraBackup 8.0.31-24 开始,使用 qpress/QuickLZ 压缩备份已被弃用,并可能在未来版本中删除。官方建议使用LZ4或 Zstandard ( ZSTD) 压缩算法。

实施步骤

1. 安装依赖包

使用流式备份xbstream格式,恢复数据时需要使用解压工具 qpress

cd /usr/local/
tar xf qpress-11-linux-x64.tar
cp -a qpress /usr/bin/

使用lz4、zstd需要安装以下软件

yum install lz4 lz4-devel lz4-static -y
yum install  zstd -y

2. 备份实例

当前数据库实例大小
image.png
(1)无压缩备份

xtrabackup   --defaults-file=/etc/my3307.cnf --user=root --password=123 --host=127.0.0.1 --port=33070 --socket=/data/mysql3307/run/mysql.sock    --backup  --target-dir=/data/backup/Unformatted

image.png
(2)流式备份xbstream格式

xtrabackup   --defaults-file=/etc/my3307.cnf --user=root --password=123 --host=127.0.0.1 --port=33070  --socket=/data/mysql3307/run/mysql.sock  --compress --compress-threads=2  --stream=xbstream  --backup  --target-dir=/data/backup/xbstream  --parallel=2 2>/data/backup/xbstream/xbstream.log  1> /data/backup/xbstream/data.xbstream

image.png
(3)lz4压缩算法备份

xtrabackup  --defaults-file=/etc/my3307.cnf --user=root --password=123 --host=127.0.0.1 --port=33070  --socket=/data/mysql3307/run/mysql.sock  --backup --compress=lz4 --target-dir=/data/backup/lz4

image.png
(4)zstd压缩算法备份

Percona XtraBackup 8.0.30-23添加了对压缩算法的支持Zstandard (ZSTD)。ZSTD是一种快速无损压缩算法,针对实时压缩场景和更好的压缩比。

xtrabackup  --defaults-file=/etc/my3307.cnf --user=root --password=123 --host=127.0.0.1 --port=33070  --socket=/data/mysql3307/run/mysql.sock  --backup --compress=zstd  --compress-threads=2 --target-dir=/data/backup/zstd

image.png

以上备份结果汇总:
image.png
注:
1)–compress-zstd-level:使用zstd格式压缩备份,指定压缩级别–compress-zstd-level(=#),默认值为1
2)–compress-threads:并行压缩

3. 数据恢复

(1)无压缩文件恢复

xtrabackup  --user=backup --password=123 --prepare --target-dir=/data/backup/Unformatted
xtrabackup  --defaults-file=/etc/my3307.cnf --user=root --password=123 --port=33070 --datadir=/data/mysql3307/data --copy-back --target-dir=/data/backup/Unformatted

(2)xbstream格式文件恢复

1)解压
xbstream -x < data.xbstream -C /data/backup/xbstream
xtrabackup --parallel=4 --decompress --target-dir=/data/backup/xbstream

2)删除解压后的.qp文件
find /data/backup20220412/  -name '*.qp'  -exec rm -f {} \;

3)恢复数据
xtrabackup  --user=backup --password=123 --prepare --target-dir=/data/backup/xbstream
xtrabackup  --defaults-file=/etc/my3307.cnf --user=root --password=123 --port=33070 --datadir=/data/mysql3307/data --copy-back --target-dir=/data/backup/xbstream

(3)lz4格式文件恢复

1)解压
cd /data/backup
xtrabackup --parallel=4 --decompress --remove-original --target-dir=/data/backup/lz4

2)恢复数据
xtrabackup  --user=backup --password=123 --prepare --target-dir=/data/backup/lz4
xtrabackup  --defaults-file=/etc/my3307.cnf --user=root --password=123 --port=33070 --datadir=/data/mysql3307/data --copy-back --target-dir=/data/backup/lz4

(4)zstd格式文件恢复

1)解压
cd /data/backup/
xtrabackup --parallel=4 --decompress --remove-original --target-dir=/data/backup/zstd

2)恢复数据
xtrabackup  --user=backup --password=123 --prepare --target-dir=/data/backup/zstd
xtrabackup  --defaults-file=/etc/my3307.cnf --user=root --password=123 --port=33070 --datadir=/data/mysql3307/data --copy-back --target-dir=/data/backup/zstd

以上恢复结果汇总:

image.png

4. 启动数据库

1)数据目录授权
chown -R mysql.mysql  /data/mysql3307/

2)启动数据库
mysqld_safe --defaults-file=/etc/my3307.cnf  --user=mysql  &

数据库运行正常,数据量验证无误。

测试总结:

LZ4压缩算法和ZSTD压缩算法针对实时压缩场景有更高的压缩比并且有效缩短备份及恢复数据的时间;要使用压缩算法压缩文件ZSTD时,指定压缩级别–compress-zstd-level(=#)、开启并行压缩–compress-threads参数会影响最终备份文件的压缩比及备份时间,所以备份参数请合理配置。

以上测试,如有不足,欢迎指正!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论