xtrabackup针对海量数据的备份优化

一、流备份命令结构

本地压缩备份

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=4IO并行线程数加速备份文件读取
--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 的输出实时压缩/传输,实现备份、压缩、传输一体化。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注