cqlsh—数据迁移到新集群后,cassandra集群中的数据不一致

slwdgvem  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(725)

在将数据移动到新集群后,我看到一些数据不一致。
旧集群总共有9个节点,每个节点上有2+tb的数据。新集群和旧集群具有相同的节点集,并且配置相同。
以下是我的表演顺序: nodetool snapshot .
已将该快照复制到目标
在目标群集上创建了新的键空间。
使用 sstableloader 要加载的实用程序。
重新启动所有节点。
在成功完成传输之后,我运行了一些查询来比较(旧集群和新集群),发现新集群不一致,但我看到的数据在每个节点上都正确分布( nodetool status ). 同一个查询为一些分区返回不同的结果集,我第一次得到零行,第二次得到100行,200行,最后对于几个分区和记录计数与旧集群匹配,结果变得一致。
很少有分区在新集群中没有数据,而旧集群中有这些分区的数据。
我试着在上面运行查询 cqlshCONSISTENCY ALL 但问题仍然存在。
我是否错过了之前和之后需要考虑的重要步骤?
有什么程序可以找出这个问题的根本原因吗?
iam当前正在运行 "nodetool repair" 但我怀疑这是否能解决,因为我一直在努力。
非常感谢您的帮助!

a1o7rhls

a1o7rhls1#

结果最终变得一致的事实表明复制副本不同步。
您可以通过查看加载数据时的日志来验证这一点,特别是对于丢失的突变。您还可以检查 nodetool netstats . 如果您看到的是阻塞读取修复,那么这是复制副本不同步的另一个确认。
如果还有其他分区可以测试,请启用 TRACING ON 在cqlsh中使用 CONSISTENCY ALL . 您将看到跟踪输出中是否存在摘要不匹配,这也会触发读取修复。干杯!
[编辑]根据您下面的评论,听起来您可能没有从源集群中的所有节点加载快照 sstableloader . 如果您没有将sstables加载到目标集群,那么这就解释了数据丢失的原因。

相关问题