使用NetworkTopology进行Cassandra迁移后数据不匹配

时间:2016-10-12 11:10:45

标签: datastax cassandra-2.1

我们的Cassandra集群在AWS EC2上运行,环中有4个节点。我们希望将整个环境迁移到Azure。 我们使用该流程使用现有数据中心(AWS EC2)添加新数据中心(Azure),使用的策略是NetworkTopology并使用GossipingPropertyFileSnitch。

添加新数据中心后,我们在新数据中心的所有节点上运行以下命令。     #nodetool rebuild - "数据中心名称"

现有数据中心的所有节点上的数据总共约为3 TB。 重建新数据中心花了大约6-7天,一旦system.log说 - 所有会话都完成了。我们在新数据中心的每个节点上检查了db大小,发现所有4个节点的大小都减小了(大约75gb,即总共300gb),而不是现有的数据中心。

有人可以告诉我这是否是检查新数据中心数据是否与现有数据中心相同的正确方法。

1 个答案:

答案 0 :(得分:1)

数据大小不是检查数据不匹配的正确方法。

尺寸可能因各种原因而有所不同,其中一些我能想到:

  1. 压实:你的压实策略是什么?您的数据是否因应用程序而不可变?如果是,则压缩不是原因,否则可能是。
  2. Flush:在检查这些尺寸之前,您是否刷新了节点?如果没有,那么一些数据可能在memtables中。
  3. 什么是密钥缓存大小等?你是如何准确计算数据大小的?它是一个简单的“du”数据目录或个别表格文件加在一起?因为数据目录包含索引文件,表格中的实际数据等。再次,这不是正确的方法。
  4. 我的建议是先查看每个表中的行数。确保两个DC的所有设置都相同。然后编写一个spark作业来检查一致性(通过校验和或单个字段,校验和可能更快)。确保火花作业以最佳方式运行而不需要改变数据,它应该能够在几小时内运行并为您提供结果。

    注意:如果不了解更多细节,这是我能做的最好的事情。