目前,我正在使用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升级 这不是一个选择。
任何建议? 感谢。
答案 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")
}
但是您还需要修改应用程序以在一段时间内写入两个群集,直到数据从一个群集复制到另一个群集,并且在复制数据之后,您可以将读取操作切换到新群集。