一、流备份命令结构
本地压缩备份
xtrabackup --backup --stream=xbstream --parallel=4 | gzip > /backup/mysqlbak.xb.gz
远程压缩备份
xtrabackup --backup --stream=xbstream --parallel=4 | ssh user@remote_ip "gzip > /remote/path/mysqlbak.xb.gz"
二、核心参数详解
| 参数 | 作用 | 说明 |
|---|
--stream=xbstream | 启用流备份 | 将备份输出到 stdout,而非文件 |
--parallel=4 | IO并行线程数 | 加速备份文件读取 |
--compress-threads=8 | 压缩并行线程数 | 配合管道中的 gzip 使用 |
三、流备份原理
MySQL数据 → xtrabackup并行读取 → xbstream打包 → stdout管道 → gzip压缩 → 写入文件/远程
(--parallel) (--stream) (|) (管道) (> 或 ssh)
四、备份文件恢复
解压并提取
gzip -d -c mysqlbak.xb.gz | xbstream -x -C /restore_dir
| 命令 | 作用 |
|---|
gzip -d -c | 解压并输出到 stdout |
xbstream -x | 提取 xbstream 格式文件 |
-C /restore_dir | 指定提取目录 |
完整恢复流程
# 1. 提取备份文件
gzip -d -c /backup/mysqlbak.xb.gz | xbstream -x -C /data/restore
# 2. prepare 备份
xtrabackup --prepare --target-dir=/data/restore
# 3. copy-back 恢复
xtrabackup --copy-back --target-dir=/data/restore --datadir=/var/lib/mysql
五、流备份优势
- 节省磁盘:边备份边压缩,无需两倍空间
- 实时传输:直接备份到远程,无需手动拷贝
- 并行处理:IO和压缩并行,提升速度
六、一句话总结
流备份通过管道将 xtrabackup 的输出实时压缩/传输,实现备份、压缩、传输一体化。
发表回复