rsync 是故障转移实现的理想选择吗(非常大的数据集)?

Jér*_*nge 5 failover rsync large-data

我有大量数据(+100 GB)可以存储到文件中。大多数文件都在 5k-50k 范围内 (80%),然后是 50k - 500k (15%) 和 >500k (5%)。文件的最大预期大小为 50 MB。如有必要,可以将大文件拆分为较小的部分。文件也可以按目录结构组织。

如果必须修改某些数据,我的应用程序会复制并修改它,如果成功,则将其标记为最新版本。然后,旧版本被删除。它是碰撞安全的(可以这么说)。

我需要实施一个故障转移系统来保持这些数据可用。一种解决方案是使用主从数据库系统,但这些系统很脆弱,并且强制依赖于数据库技术。

我不是系统管理员,但我阅读了 rsync 指令。它看起来很有趣。我想知道设置一些故障转移节点并使用我的主节点的 rsync 是否是一个负责任的选择。有没有人成功尝试过这个?

i) 如果是,我应该拆分我的大文件吗?rsync 在检测要复制/删除的文件方面是否智能/高效?我应该实现特定的目录结构来使这个系统高效吗?

ii) 如果 master 崩溃并且一个 slave 接管了一个小时(例如),让 master 再次更新是否像反过来运行 rsync 一样简单(slave to master)?

iii) 额外问题:是否有可能使用 rsync 实现多主系统?还是只有主从可能?

我正在寻找建议、技巧、经验等...谢谢!!!

Zor*_*che 3

rsync 在检测要复制/删除哪些文件方面是否智能/高效?

Rsync 在检测和更新文件方面非常高效。 根据文件的变化情况,您可能会发现少量的大文件比大量的小文件更容易同步。根据您选择的选项,每次运行时都会对两侧的每个文件进行 stat() 操作,然后如果文件不同则传输更改。如果只有少量文件发生更改,那么查找已更改文件的步骤可能会非常昂贵。rsync 需要多长时间会受到很多因素的影响。如果你真的想尝试这个,你应该对真实数据进行大量测试,看看事情是如何运作的。

例如,如果主服务器崩溃并且从服务器接管一个小时(例如),那么使主服务器再次保持最新状态是否就像相反地运行 rsync(从服务器到主服务器)一样简单?

应该。

是否有可能使用 rsync 实现多主系统?

Unison 使用 rsync 库允许双向同步。它应该允许任何一方进行更新。通过正确的选项,它可以识别冲突并保存两端发生更改的任何文件的备份。

在不了解更多细节的情况下,我无法自信地告诉您这是正确的方法。您可能需要查看 DRBD 或其他一些集群设备/文件系统方法,它们将在较低级别同步内容。