【问题标题】:How to validate the restoration is successful如何验证还原是否成功
【发布时间】:2018-08-31 17:10:37
【问题描述】:

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

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

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

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

select count(*) from milestone LIMIT 100000;

我的问题:

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

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

【问题讨论】:

标签: cassandra cassandra-2.0 cassandra-3.0


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      相关资源
      最近更新 更多