备份时,有几个选项保存备份文件。你可以选择在本地保存它们在同一台服务器上,流到不同的服务器上,或者将它们存储在对象存储。rayben雷竞技 促进了流媒体通过使用一个名为xbcloud的辅助工具。
STDOUT Datasink
这个图表显示的过程流备份对象存储利用当前STDOUT datasink:

- XtraBackup线程生成多个副本。每个人会阅读大量的数据从一个特定的文件。
- 每个复制线程将数据块写入管道(又名STDOUT)。
- Xbcloud将有一个红色的线程将负责从STDIN读取每个块的数据。这一块将上传对象存储利用一个异步请求,和一个回调将事件处理程序添加到一个列表中。
- 事件处理程序线程xbcloud将负责检查TCP套接字时收到的响应对象存储和执行回调根据返回(成功或失败)。
当测试XtraBackup流的速度,我们可以看到约1.8 Gbps的限制。此体系结构工作正常上传数据时通过广域网(我们是不会有这个速度超过WAN)。然而,需要流局域网备份已经成为更受欢迎,和10 gbps或更多是标准的设置。
经过仔细考虑上述架构,它变得清晰,即使xbcloud可以从STDIN行动超级快速阅读,做一个异步操作对象存储,并授权过程等待响应事件处理程序工作线程,线程只有一个XtraBackup一侧,可以写在同一时间发送到STDOUT。这是通过一个互斥锁,以确保分配一个数据块是从头到尾写的。否则,我们会干扰其他复制线程数据附加到STDOUT,另一线程没有完成其初始块。
FIFO Datasink
雷竞技下载官网Percona XtraBackup 8.0.33-28引入了一个新的datasink真正的并行流。这个新的datasink利用FIFO(命名管道)来实现真正的并行流数据从XtraBackup xbcloud。扩展前面的图,新的数据流将看起来像下图:

- 多个FIFO文件将被创建,它将负责将数据存储从XtraBackup xbcloud。
- 每个XtraBackup复制线程将被绑定到一个FIFO文件循环的方式。
- Xbcloud将有多个读线程读取FIFO流。
使用
我们介绍了三个新的参数:
- fifo-streams = #数量的FIFO文件用于并行datafiles流。这个参数设置为1禁用FIFO,将流发送到STDOUT。默认值是1 (STDOUT)为了向后兼容。
- fifo-dir =路径目录编写命名管道。
- fifo-timeout = #多少秒等待另一端打开阅读。默认是60秒
目前的行为和XtraBackup和云都没有改变。-fifo-streams的默认值是1,所以我们仍然有一个单行的命令:
性能
为了测试新FIFO datasink,我们创造了1 tb的数据到多个表。之间的链接速度源服务器和目标服务器(利用MinIO) ~ 9.2 gbps:

执行的测试是没有任何负载(期间没有新的重做日志备份),以确保这两个测试都将从两个服务器1 tb的数据。
结果在下面的图所示:

- STDOUT,利用239 MBps (1.8 Gbps),把01:25:24推动1 tb的数据。
- FIFO管道(8)——利用1.15 GBps (9.2 Gbps),只花了00:16:01将相同的1 tb的数据。
总结
如果你利用流在你的本地网络,你绝对可以受益于更快的备份,使用新的FIFO datasink并行流数据。
雷竞技下载官网Percona XtraBackup是一个免费,开源,完成在线备份解决方案所有版本的Percona MySQL和MySQL服务器。





