在单独的集群上使用aws ebs的快照进行恢复

q1qsirdb  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(324)

我有一个有3个节点的集群——比如说AWSEC2示例上的cluster1。集群已启动并正在运行,已获取密钥空间卷的快照。
现在我想从快照卷中恢复几个表/键空间,因此我创建了另一个集群cluster2,并将快照卷附加到新集群的ec2节点上(节点数相同)。cluster2没有启动bcz所拍摄的快照中的系统密钥空间的群集名称为cluster1,而要还原它的群集是cluster2。在这种情况下,如何进行恢复?我不想对现有集群做任何修改。
另外,在执行恢复时,是否需要考虑新旧集群Map的令牌范围?

zbdgwd5y

zbdgwd5y1#

在启动cluster2之前,重要的是确保cluster1的所有ip地址都不包括在cluster2的种子列表中,以确保它们之间保持不知道状态。另外,要从路径中删除 data_file_directories (如cassandra.yaml中所定义),以下目录:
系统
系统认证
分布式系统
系统跟踪 system_schema 不应触碰,因为它包含键空间和表的模式定义。
启动集群,一次启动一个节点;第一个节点应该在种子列表的开头包含它自己的ip地址;这将是一次性更改,一旦集群启动并运行,就应该删除更改。
此时,您应该有一个单独的集群,其中包含拍摄快照时原始集群的信息和结构。要测试这个,请执行 nodetool gossipinfo 并且只列出cluster2的节点,登录到cqlsh describe keyspaces 应该列出所有键空间,执行应用程序的查询应该检索数据。您将注意到,cassandra已经生成了system*密钥空间,并处理了令牌分发。
下一步是更新每个节点中已还原群集的名称:
登录cqlsh
执行 UPDATE system.local SET cluster_name = 'cluster2' where key='local'; 退出cqlsh
nodetool flushnodetool drain 编辑cassandra.yaml文件,更新 cluster_name 名为“cluster2”
重新启动cassandra服务
等待,直到节点报告为正常 nodetool status 或者 nodetool netstats 对其他节点重复此操作
此时,您将有两个独立的集群,名称不同。

相关问题