LVM+MongoDB。备份创建速度下降

LVM+MongoDB。备份创建速度下降

直到最近,我们一直在使用 SAS 磁盘上的 RAID10 在隐藏的 SECONDARY 服务器上制作 mongo 备份存档 LVM 快照。

目前,从包含 500 Gb 数据的卷制作快照的操作需要很长时间。

最终存档约为 100Gb,在创建第一个 35 Gb 后 30 分钟内磁盘速度急剧下降。直到存档达到 52 Gb 时,它才工作了 6 个多小时。我知道在主卷上的活动 I/O 期间执行 LVM 快照可能会减慢磁盘操作,但无法想象它可能会使其减慢数十倍!

现在我在想如何提高备份速度

作为一种潜在的解决方案,我看到了我们在备份服务器上停止 mongodb 并从“离线”服务器/卷运行 LVM 快照的方法。然后再次启用它并与主副本集重新同步。

但是这种方式可能会导致问题,因为 php-mongo-driver 无法正确响应 replicaSet 中的服务器列表更改。我们需要在所有连接的客户端上重新启动 php-fpm,以修复此问题并使 php 快速看到新的更改。

您能否向我们推荐在主动 I/O 负载下对 500Gb+ 数据进行 mongo 备份的最佳方法。

先感谢您!

答案1

关于 LVM 快照速度变慢,如果您对大量文件进行大量随机分布的写入(如果您在大型 MongoDB 数据集上插入/更新文档,那么 LVM 可能确实难以跟上。维修/袖珍的在数据库上(或节点重新同步从头开始)可能在文件更改数量方面有所帮助(紧凑将对文件中的数据进行“碎片整理”,修复/重新同步将从头开始重写数据),但这可能只是一个渐进的改进。

就您提出的解决方案而言,这听起来不错,但我建议您将要备份的节点设为隐藏节点,那么您就可以消除对驱动程序和设置更改的担忧。驱动程序使用isMaster 命令确定集合的布局,当节点被隐藏时,该命令不会返回它。

然后,您可以关闭节点,执行快照,并在完成后重新启动以让其重新同步。

相关内容