cassandra 数据从常规驱动器迁移到生产服务器上的 SSD

cassandra data migration from regular drive to SSD on production server

我们想将我们的数据从生产服务器上的常规驱动器迁移到新的 SSD 驱动器。我们如何在不超过 4 小时的情况下关闭节点(提示切换是 4 小时)我们的数据是几百 GB。

我在想的是一次在一个节点上停止 cassandra 将数据刷新到磁盘,然后将数据从旧驱动器传输到新驱动器并卸载旧磁盘并使节点重新联机。这是正确的做法吗??如果是这样 我主要担心的是,数据迁移到新磁盘平均需要 4 个多小时,而我会丢失提示。

有没有更好的方法将数据迁移到新磁盘?

添加磁盘。

使用rsync -avz --delete /old/data/dir /new/data/dir将sstables从一个(旋转)驱动器复制到另一个(ssd)驱动器。您可以 运行 在 cassandra 运行ning 时这样做 - 除了因 IO 争用而增加延迟外没有风险。您可以使用 niceionice.

来控制延迟的增加

一旦您 运行 rsync,您就会对迁移过程的上限有所了解。您还将拥有一个初始快照。 运行 再次执行,然后第二次计时 - 它可能会快得多 - 它会保留未更改的文件,删除已删除的文件,并复制任何新文件。如果这比 4 小时快(可能会),那么您可以继续 运行 nodetool flushnodetool drain,停止 cassandra,然后第三次 运行 rsync . rsync 完成后,将路径更改为 yaml 中的数据文件目录,然后启动 cassandra - 将提供提示,你就可以开始了。

或者,您可以做完全相同的事情,如果它花费的时间超过 4 小时提示 window,请在提示过期后使用 nodetool repair 来获取您错过的任何写入.