【备份工具】XtraBackup 流式传输和压缩备份-远程备份
2021-01-28 本文已影响0人
醉红尘丶
环境
- xtrabackup 2.4.21
- 数据库版本:MySQL 5.7.27
- 可参考 https://help.aliyun.com/knowledge_detail/41817.html?spm=a2c4g.11186623.2.20.5d524bd6VAVSq6
1.使用 xbstream
1.1 无压缩全量备份
1.1.1 备份
xtrabackup --defaults-file=/etc/my.cnf --user=databak -S /tmp/mysql.sock --parallel=2 --backup --stream=xbstream --target-dir=/app/backup > /app/backup/xtra_full_`date +%Y%m%d%H%M%S`.xbstream
- 【可选】开启了并行
--parallel=2
1.1.2 解包
# 创建解包后的数据目录
mkdir /app/backup/data
cat /app/backup/xtra_full_20210127173747.xbstream | xbstream -x -v -C /app/backup/data
1.2 全量备份并压缩
1.2.1 备份
xtrabackup --defaults-file=/etc/my.cnf --user=databak -S /tmp/mysql.sock --parallel=2 --backup --compress --stream=xbstream --target-dir=/app/backup > /app/backup/xtra_full_`date +%Y%m%d%H%M%S`.xbstream
- 【可选】开启了并行
--parallel=2
- 【可选】开启了压缩
--compress
1.2.2 解包
# 创建解包后的数据目录
mkdir /app/backup/data
# 解包,解压出都是qb文件
cat /app/backup/xtra_full_20210127173747.xbstream | xbstream -x -v -C /app/backup/data
# 解压缩解包出的文件,并删除qb原文件
xtrabackup --decompress --remove-original --target-dir=/app/backup/data
1.3 将压缩备份发送到另一台主机
需要配置连接远程服务器ssh免密
echo "192.168.66.101 initnode" >> /etc/hosts
ssh-keygen # 一路回车
ssh-copy-id initnode
备份到远程目录
xtrabackup --defaults-file=/etc/my.cnf --user=databak -S /tmp/mysql.sock --parallel=2 --backup --stream=xbstream --target-dir=/app/backup | ssh root@initnode \ "cat - > /data/backup/xtra_full_`date +%Y%m%d%H%M%S`.xbstream"
- 【可选】开启了并行
--parallel=2
- 【可选】压缩
--compress
1.4 将压缩备份发送到另一台主机并解包
这个需要在备份服务器上也安装xtrabackup
# 远程备份机上创建
mkdir /data/backup/data_`date +%Y%m%d`
xtrabackup --defaults-file=/etc/my.cnf --user=databak -S /tmp/mysql.sock --parallel=2 --backup --stream=xbstream --target-dir=/app/backup | ssh root@initnode "xbstream -x -v -C /data/backup/data_`date +%Y%m%d`"
2.使用 tar
2.1 无压缩全量备份
2.1.1 备份
xtrabackup --defaults-file=/etc/my.cnf --user=databak -S /tmp/mysql.sock --parallel=2 --backup --stream=tar --target-dir=/app/backup > /app/backup/xtra_full_`date +%Y%m%d%H%M%S`.tar
2.1.2 解压
# 创建解压目录
mkdir -p /app/backup/data
tar -xvf xtra_full_20210127194352.tar -C /app/backup/data
2.2 全量备份并压缩
2.2.1 备份
xtrabackup --defaults-file=/etc/my.cnf --user=databak -S /tmp/mysql.sock --parallel=2 --backup --stream=tar --target-dir=/app/backup|gzip - > /app/backup/xtra_full_`date +%Y%m%d%H%M%S`.tar
- 【可选】开启了并行
--parallel=2
- 【可选】进行了压缩
gzip
,压缩的话会偏慢一点
2.2.2 解压
tar -zxvf xtra_full_20210127194850.tar -C /app/backup/data
2.3 将压缩备份发送到另一台主机
xtrabackup --defaults-file=/etc/my.cnf --user=databak -S /tmp/mysql.sock --parallel=2 --backup --stream=tar --target-dir=/app/backup|gzip | ssh root@initnode \ "cat - > /data/backup/xtra_full_`date +%Y%m%d`.tar"
- 【可选】开启了并行
--parallel=2
- 【可选】进行了压缩
gzip
,不压缩的话去掉 |gip即可