适用范围
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. 备份实例
当前数据库实例大小
(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
(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
(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
(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
以上备份结果汇总:
注:
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
以上恢复结果汇总:
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参数会影响最终备份文件的压缩比及备份时间,所以备份参数请合理配置。
以上测试,如有不足,欢迎指正!