sme*_*eeb 6 data-migration downtime cassandra datastax
我有一个Cassandra集群(3个节点,所有节点都部署到AWS)我试图迁移到DataStax集群.现在是时候停止自己管理这些节点了.
我有多个生产者和消费者全天都在读取/写入我的Cassandra集群的数据.我没有选择将app/service/proxy放在我的Cassandra集群前面,然后只是干净地翻转开关,以便所有读/写进出我的Cassandra,再到DataStax.因此,没有一种方法可以一次迁移一个表.我还试图为数据的所有生产者/消费者实现零(或接近零)停机时间.一个硬性要求:迁移不能有损.没有丢失的数据!
我认为这里最好的策略是一个四步过程:
这个解决方案是我能提出的最微创,最接近零停机的解决方案,但假设了以下几点:
我想我想知道这个策略是否:(1)可行/可行,(2)最佳; 如果Cassandra/DataStax生态系统中有任何功能/工具,我可以利用它来做得更好(更快,零停机时间).
小智 4
您概述的四个步骤绝对是一个可行的选择。还有进行简单的滚动二进制安装的途径: https://docs.datastax.com/en/latest-upgrade/upgrade/datastax_enterprise/upgrdCstarToDSE.html
\n\n我将根据您上面提供的步骤进行发言。如果您对滚动二进制安装感到好奇,我们当然也可以讨论这个问题。
\n\n注意文档链接特定于 Cassandra 3.0 (DataStax 5.0) - 确保文档版本与您的 Cassandra 版本匹配。
\n\n如果 DataStax 中当前主要 Cassandra 版本 == 当前主要 Cassandra 版本,您应该能够将“DataStax”节点添加为当前 Cassandra 环境所属的同一集群中的新 DC:http://docs。 datastax.com/en/cassandra/3.0/cassandra/operations/opsAddDCToCluster.html - 这会将现有数据从现有 Cassandra DC 引入到 DataStax DC。
\n\n如果您的 Cassandra 版本不匹配(当前的 Cassandra 比 DataStax Cassandra 旧/新),那么您可能需要通过https://academy.datastax.com/slack联系 DataStax,因为该过程将更具体地针对您的情况。环境,并且可能差异很大。
\n\n正如文档中所述,您需要运行
\n\nALTER KEYSPACE "your-keyspace" WITH REPLICATION =\n{\'class\xe2\x80\x99: \'NetworkTopologyStrategy\', \'OldCassandraDC\':3, \'DataStaxDC\':3};\nRun Code Online (Sandbox Code Playgroud)\n\n(显然将 DC 名称和复制因子更改为您的规格)
\n\n这将确保来自生产者的新数据将复制到新的 DataStax 节点。
\n\nnodetool rebuild -- name_of_existing_data_center然后,您可以从 DataStax 节点运行,以从现有 Cassandra 节点传输数据。根据数据量的不同,这可能会有点耗时,但这是最简单、最省力的方法。
然后,您需要在停用旧 Cassandra DC 之前一一更新生产者/消费者中的接触点。
\n\n根据我的经验,有几点建议:
\n\nnodetool rebuild,使用屏幕进行操作,以便您可以看到它何时完成(或错误),否则,您将必须通过使用nodetool netstats和检查流活动来监视进度。希望有帮助!
\n| 归档时间: |
|
| 查看次数: |
1019 次 |
| 最近记录: |