如何验证恢复是成功的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何验证恢复是成功的相关的知识,希望对你有一定的参考价值。

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

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

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

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

select count(*) from milestone LIMIT 100000;

我的问题:

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

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

答案

通常为了验证数据恢复,您可以在开始时和恢复之后对数据集进行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

另一答案

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

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

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

以上是关于如何验证恢复是成功的的主要内容,如果未能解决你的问题,请参考以下文章

从另一个活动返回后如何恢复活动中最后打开的片段

如何更新片段简历上的数据

某软件登陆需要手机短信验证才能开始服务,求破解?求思路?

在Fragments中保存和恢复ListView(livedata)

如何使用 onSaveInstanceState 在我的片段上保存和恢复接口

在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始