## 实验环境


此次实验的环境如下

- MySQL 5.7.26

- Redhat 6.10

- 操作系统账号:mysql

- 数据库备份账号:backup 






## 1. 流式备份

流式备份模式,是Percona XtraBackup支持的一种备份形式,他不会将备份文件输出到备份目录,他会将输出到SDTOUT的文件合成一个tar或者xbstream格式的文件

这样我们可以用一些程序对其进行操作,例如压缩或者加密

xbstream格式为xtrabackup用来同时支持压缩和流式的文件格式





## 2. 使用xbstream


### 2.1 备份成一个文件


```
innobackupex    -S /oradata/data/mysql/data/mysql.sock  --user=backup --password=123456  --stream=xbstream /oradata/data/mysql/xtra> /oradata/data/mysql/xtra/backup.xbstream
```


[image:833 size:orig]



从日志上我们可以看出比传统的备份多出了streaming动作

最后的文件如下图


[image:834 size:orig]


### 2.2 流式备份并压缩文件



```
innobackupex    -S /oradata/data/mysql/data/mysql.sock  --user=backup --password=123456  --stream=xbstream  --compress /oradata/data/mysql/xtra> /oradata/data/mysql/xtra/backup_compress.xbstream
```

可以看出比上面的多了个压缩的动作


[image:835 size:orig]

可以看到文件比上面的要小


[image:836 size:orig]

### 2.3 解压备份到指定目录

```
xbstream -x < /oradata/data/mysql/xtra/backup.xbstream -C /oradata/data/mysql/xtra/
```

注意这里直接将所文件解压到指定目录,而不是在一个以日期为名称的文件夹中

目录必须事先存在

压缩和未压缩的文件都使用该命令


[image:837 size:orig]


### 2.4 传到远程服务器并解压

这里需要配置ssh互信,不然会卡住

```
innobackupex    -S /oradata/data/mysql/data/mysql.sock  --user=backup --password=123456  --stream=xbstream  --compress /oradata/data/mysql/xtra  | ssh mysql@11.12.14.30  "xbstream -x -C  /oradata/data/mysql/xtra/"

```


## 3. 使用tar

### 3.1 备份成tar格式(打包)

注意这里无法使用--compress,该参数只支持stream

```
innobackupex    -S /oradata/data/mysql/data/mysql.sock  --user=backup --password=123456  --stream=tar /oradata/data/mysql/xtra> /oradata/data/mysql/xtra/backup.tar
```

如果需要压缩功能可使用如下命令

```
innobackupex    -S /oradata/data/mysql/data/mysql.sock  --user=backup --password=123456  --stream=tar /oradata/data/mysql/xtra | gzip - > /oradata/data/mysql/xtra/backup_compress.tar.gz
```

或者

```
innobackupex    -S /oradata/data/mysql/data/mysql.sock  --user=backup --password=123456  --stream=tar /oradata/data/mysql/xtra | bzip2 - > /oradata/data/mysql/xtra/backup_compress.tar.bz2
```

注意解包需要用-i参数,如

```
$ tar -xizvf backup_compress.tar.gz
```

### 3.2 发送到远程服务器

这里需要配置ssh互信,不然会卡住

```
innobackupex    -S /oradata/data/mysql/data/mysql.sock  --user=backup --password=123456  --stream=tar /oradata/data/mysql/xtra | ssh root@11.12.14.30  "cat - > /oradata/data/mysql/xtra/backup.tar"
``` 



## 4. 参考资料

本专题所有内容翻译子Percona XtraBackup的官方文档

可通过如下链接下载

[http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1/](http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1/)


[上一章](http://www.zhaibibei.cn/mysql/xtrabackup/tutorial11)