如何验证恢复是成功的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何验证恢复是成功的相关的知识,希望对你有一定的参考价值。
我从一个节点获取了完整的快照。我已复制快照目录并将其放在恢复节点中的/var/lib/cassandra/data/Keyspace/Tables/
目录中。我已尝试重新启动服务,并尝试使用nodetool refresh
命令恢复新节点中的数据。它就像一个魅力。
我无法列出具有大量记录的表的记录数。对于记录较高的表,我面临Connection timed out
错误。所以我无法验证表中的总数据是否已成功恢复。
此外,我尝试使用nodetool cfstats -H
和nodetool tablestats -H
检查键空间占用的大小,并且“Space used”参数似乎完全匹配。
我使用下面的命令列出特定表的总数。
select count(*) from milestone LIMIT 100000;
我的问题:
如果恢复期间很少有记录丢失怎么办?如果备份和恢复数据的计数不匹配怎么办,我无法知道它。您能否建议验证恢复是否成功的方法?
如何确保成功复制记录总数?
通常为了验证数据恢复,您可以在开始时和恢复之后对数据集进行CSV
备份,然后再进行一次CSV
备份。然后比较这两个备份,是否有任何遗漏。
要与csv
比较:
# diff mytable_old.csv mytable_new.csv
要了解更多关于CQLSH COPY
的csv
备份:https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshCopy.html
根据您的数据集大小,可能无法(合理?)来比较完整数据集。
使用随机方法并查询数据集的%。
如果您确实想查询完整数据集,最好的方法是通过令牌逐个查询所有分区,并与原始数据集进行比较。您可以在这里查看https://github.com/ckalantzis/cassTickler以获取如何查询完整数据集的示例。目标是不同的,但我推荐的方法是相同的。
以上是关于如何验证恢复是成功的的主要内容,如果未能解决你的问题,请参考以下文章
在Fragments中保存和恢复ListView(livedata)