我们尝试使用 cassandra cli 删除 CF
DROP COLUMN FAMILY cfName
当我们从 CLI 列出 CF 时,它不在那里,而当我尝试通过 hector 获取现有 CF 时
我仍然可以看到 CF 名称
KeyspaceDefinition keyspaceDefinition = newConnection().describeKeyspace(keyspaceName);
keyspaceDefinition.getCfDefs();
然而,CF 内的数据不存在,CF 仍然列出,在通过 hector 列出 CF 后,如果我执行 cassandra -cli list columns family,我可以再次看到已删除的 CF
我也必须在 Cassandra 1.1 上处理这个问题。基本上,我的列族已经损坏,改变其架构的唯一方法是删除/恢复键空间(当时 DataStax 引导我完成了该操作)。
如果您与 DataStax 签订了支持合同,我强烈建议您在继续之前联系他们。他们会告诉您的第一件事是,这是 Cassandra 1.1 特定版本中的错误,您应该升级。我还没有测试过它,但根据他们的说法,就地升级将允许您在新版本中修改架构。因此,您可以通过升级到 1.2 或 2.0 来解决此问题。
就我而言(生产、企业环境),现场升级不是一个选择。为了解决这个问题,我基本上必须删除整个键空间,重新创建它(以及我的列族),然后从快照中恢复。我松散地遵循此处找到说明 http://www.datastax.com/docs/1.0/operations/backup_restore:
- 拍摄每个节点上的键空间的快照。快照文件应存储在 [keyspaceName]/snapshots 目录中,但为了安全起见,我将其复制到另一个非 Cassandra 位置。
- 删除你的密钥空间。
- 停止所有节点。
- 在每个节点上,删除键空间目录中的 .db 文件(但不删除快照目录)。
- 将文件从快照目录复制回键空间目录。
- 重启一个节点
- 从该节点的
cassandra-cli
重新创建您的密钥空间。
- 验证您的数据是否存在。
- 重新启动其余节点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)