【发布时间】:2018-08-28 23:20:51
【问题描述】:
场景如下: 我有 1 个 Cassandra 节点,其中有一个键空间,其中有 2 个表。让我们将这些表称为 A 和 B。现在我有一个脚本,可以在批处理语句中非常快速地将数据插入这两个表中。表 A 具有列“k”和“value”。表 B 具有列“k”和“值”。批量查询如下:
BEGIN BATCH
INSERT INTO A(k, value) VALUES ("a", 1);
INSERT INTO B(k, value) VALUES ("b", 1);
APPLY BATCH
值 1 会在每个连续的批处理查询中不断增加。所以如果表 A 有 (a, 1000),那么表 B 必须有 (b, 1000)。因为(记录的)批处理查询是原子的。
现在我的问题是,nodetool 快照在这种情况下如何工作?我已经看过快照的源代码,它似乎是每个键空间,每个表,一张一张的。因此,例如,在时间 0,它获取表 A 的快照,其中包含 ("a", 100),然后在时间 1 插入一个新的批处理查询(值为 101),然后在时间 2,它需要b 的快照,这意味着 b 的快照将具有 101 的值,但 a 不会。
如果上面的解释是正确的,那在恢复时会不会造成问题?恢复后表A如何获得(“a”,101)?还是恢复后表B没有(“b”,101)?
【问题讨论】:
标签: cassandra backup restore snapshot nodetool