我已使用此链接cassandra-backup.sh
在cassandra中备份了密钥空间。要恢复,我编写了一个脚本,该脚本从包含快照的备份文件夹中复制内容,并粘贴到/ var / lib / cassandra / data / mykeypsace /下的相应目录中,但是当我看到mykeyspace的表内容时,什么都没有恢复。 例如,备份文件夹:路径/ mykeyspace / tableOne / snapshot / all-contents到var / lib / cassandra / data / mykeyspace / tableOne / all-contents
我遵循的还原过程:
我想念什么吗?
其他详细信息:cqlsh 5.0.1 |卡桑德拉3.11.3 | ubuntu 16.04
答案 0 :(得分:0)
讨厌成为杀人狂,但是备份过程并不像复制sstables那样简单。您需要跟踪哪些节点实际生成了特定的SSTable(或包含它的快照)。
您需要:
备份
nodetool ring
或nodetool info -T
)恢复:
initial_token: 1, 2
rm /var/lib/cassandra/data
(在每个节点上)nodetool refresh
以使Cassandra加载新复制的数据。 (在每个节点上)有关令牌的快速示例(这可能会令人困惑): 假设集群有3个节点,每个节点有2个虚拟令牌,因此范围是1-6。某些令牌分配给某些节点,最简单的方法是使用:
$ nodetool ring
Datacenter: datacenter1
==========
Address Rack Status State Load Owns Token
6
127.0.0.1 rack1 Up Normal 156.55 MiB 33.33% 1
127.0.0.1 rack1 Up Normal 156.55 MiB 33.33% 2
127.0.0.2 rack1 Up Normal 156.54 MiB 33.33% 3
127.0.0.2 rack1 Up Normal 156.54 MiB 33.33% 4
127.0.0.3 rack1 Up Normal 156.55 MiB 33.33% 5
127.0.0.3 rack1 Up Normal 156.55 MiB 33.33% 6
从快照恢复时,我必须为每个节点设置以下initial_token:
# node 127.0.0.1's cassandra.yaml
initial_token: 1,2
# node 127.0.0.2's cassandra.yaml
initial_token: 3,4
# node 127.0.0.3's cassandra.yaml
initial_token: 5,6
这通常是自动的,因为虚拟令牌的默认设置为256。