我有4个节点的cassandra集群在本地DC中的生产环境中运行。我必须将其移至AWS cassandra。由于某些原因,我不想将cassandra移至dynamoDB。
使用的Cassandra版本相当旧,即1.2.9。
如何将cassandra从本地DC迁移到AWS cassandra,而不会造成数据丢失和零停机时间。
关于, Vivek
答案 0 :(得分:2)
在AWS中创建新的DC。在两个DC之间配置DC间同步。拆除旧的DC。
https://docs.datastax.com/en/cassandra/3.0/cassandra/operations/opsAddDCToCluster.html
答案 1 :(得分:1)
我以前做过。
正如Alex Tbk所说,您将在AWS的节点上添加一个新的数据中心。
使用新的逻辑数据中心名称添加新的空节点。您需要使用GossipingPropertyFile
窃听功能(如果尚未安装),并在cassandra-rackdc.properties
文件中指定DC。您还可以在该文件中指定一个逻辑机架,通常将AWS可用区放在那里是个好主意。
构建了一个AWS节点后,请使用第一个节点的IP作为种子来构建其余节点。您不希望他们尝试在重新启动时尝试达到本地DC。然后,您还需要将第一个节点设置为使用另一个节点作为种子节点。
一旦构建了节点,就需要修改密钥空间并为新的AWS DC指定复制因子。
使用您现有的DC作为源,在每个AWS节点上运行nodetool rebuild
。
nodetool rebuild -- sourceDCName
绝对会考虑升级。 1.2是可靠的版本,但您错过了许多新功能/修复程序。
注意:有些人建议使用AWS特定的告密者(EC2Snitch
,EC2MultiRegionSnitch
),但是您希望集群中的所有节点都在同一告密者上运行。因此,对于混合云部署(在您有机会对内部部署节点进行分解之前),您需要坚持使用GossipingPropertyFile
告密者。老实说,这是我唯一使用的告密者,无论提供者是什么,您也应该对此感到满意。