将Cassandra2集群迁移到新的Cassandra3集群,相同的模式,零停机时间

时间:2018-05-23 10:27:53

标签: database cassandra synchronization migrate

目前,我正在使用Cassandra 2.0.11在多节点DC上运行 我有一个新的多节点DC运行Cassandra 3.1.11 我希望在零停机时间和零数据丢失的情况下迁移所有数据 我有不间断的读/写&#39>

1:我考虑将DC连接到同一个集群,让Cassandra做它知道要做的事情,然后慢慢退役旧dc但我已经读过我不能(?)在同一个集群上有不同的Cassandra版本< / p>

2:我可以使用相同的Cassandra版本,将DC连接到群集, 让数据迁移,然后从2.0.11 =&gt; ... =&gt; 3.1.11升级 这不是一个选择。

任何建议? 感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Spark Cassandra Connector作为示例(完整代码为Ticket #10551)。

  val rddFromClusterOne = {
    // Sets connectorToClusterOne as default connection for everything in this code block
    implicit val c = connectorToClusterOne
    sc.cassandraTable("ks","tab")
  }

  {
    //Sets connectorToClusterTwo as the default connection for everything in this code block
    implicit val c = connectorToClusterTwo
    rddFromClusterOne.saveToCassandra("ks","tab")
  }

但是您还需要修改应用程序以在一段时间内写入两个群集,直到数据从一个群集复制到另一个群集,并且在复制数据之后,您可以将读取操作切换到新群集。