如何验证恢复是成功的

问题描述 投票:1回答:2

我从一个节点获取了完整的快照。我已复制快照目录并将其放在恢复节点中的/var/lib/cassandra/data/Keyspace/Tables/目录中。我已尝试重新启动服务,并尝试使用nodetool refresh命令恢复新节点中的数据。它就像一个魅力。

我无法列出具有大量记录的表的记录数。对于记录较高的表,我面临Connection timed out错误。所以我无法验证表中的总数据是否已成功恢复。

此外,我尝试使用nodetool cfstats -Hnodetool tablestats -H检查键空间占用的大小,并且“Space used”参数似乎完全匹配。

我使用下面的命令列出特定表的总数。

select count(*) from milestone LIMIT 100000;

我的问题:

如果恢复期间很少有记录丢失怎么办?如果备份和恢复数据的计数不匹配怎么办,我无法知道它。您能否建议验证恢复是否成功的方法?

如何确保成功复制记录总数?

apache cassandra cassandra-2.0 cassandra-3.0
2个回答
0
投票

通常为了验证数据恢复,您可以在开始时和恢复之后对数据集进行CSV备份,然后再进行一次CSV备份。然后比较这两个备份,是否有任何遗漏。

要与csv比较:

# diff mytable_old.csv mytable_new.csv

要了解更多关于CQLSH COPYcsv备份:https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshCopy.html


0
投票

根据您的数据集大小,可能无法(合理?)来比较完整数据集。

使用随机方法并查询数据集的%。

如果您确实想查询完整数据集,最好的方法是通过令牌逐个查询所有分区,并与原始数据集进行比较。您可以在这里查看https://github.com/ckalantzis/cassTickler以获取如何查询完整数据集的示例。目标是不同的,但我推荐的方法是相同的。

© www.soinside.com 2019 - 2024. All rights reserved.