我们希望将数据从生产服务器上的常规驱动器迁移到新的 SSD 驱动器。我们如何才能做到这一点,而无需关闭节点超过 4 小时(提示的交接时间为 4 小时)我们的数据只有几百 GB。
我当时的想法是一次在一个节点上停止 Cassandra,将数据刷新到磁盘,然后将数据从旧驱动器传输到新驱动器,卸载旧磁盘并重新使节点联机。这是正确的方法吗?如果是这样,我主要担心的是,将数据迁移到新磁盘需要 4 个多小时,同时我会丢失提示。
有没有更好的方法将数据迁移到新磁盘?
答案1
当 Cassandra 运行时,从 HD rsync 到 SSD。确保使用 -H 和 --delete 标志来处理硬链接和已删除的 sstables/commitlogs。如果它们位于同一设备上,请不要忘记提交日志。一旦您已经传输了大部分数据并且后续 rsync 相对快速地完成,您就可以清空并停止该 cassandra 实例,执行最后的 rsync,然后更改 data_dir 路径。这将节点停机时间缩短到几分钟,大致相当于最终 rsync 所需的时间,假设机箱可以同时容纳 HD 和 SSD。
答案2
或者如果你的复制> 1,模拟一个死节点,然后使用新的 SSD 布局引导它并让它重新加入集群。