Cassandra将数据移动到另一个新的Cassandra节点 –

我有一个生产cassandra节点,并希望在我的本地机器中创建相同的cassandra.根据我的理解,我可以选择以下选项

 1. Taking snapshot of each keyspace from production and use it in local machine.(But It would take more time as I have many keyspace).
 2. Exporting production cassandra data to as CSV and importing in to local cassandra(I have COUNTER TABLE. Hence,It also creating some headache - Correct me if it is not).

我的问题是“如果我将整个data_directory,Commit_log文件夹从生产移动到本地并启动本地cassandra会发生什么?”.反正有可能吗?

当我做上述解决方案时,cassandra会抛出许多错误.

请帮助找出快速和简短的解决方案.

谢谢

最佳答案 如果您要做的就是在本地计算机上重新创建生产节点,那么您真正需要做的就是复制所有内容(假设硬件类似).

来自生产:

>将数据从memtables刷新到磁盘.
>运行nodetool快照并获取所有ColumnFamilies / KeySpaces的快照
>确保您拥有创建ColumnFamilies / Keyspaces的CQL脚本
>复制配置文件,commitlogs,saved_cache,日志,数据目录

到您的本地机器(假设全新安装)

>安装Cassandra(确保它与Production的版本相同)
>使用从生产中复制的脚本重新创建ColumnFamilies / Keyspaces
>复制配置文件/编辑配置文件/ saved_cache,日志,数据目录
>将快照放在正确的目录中

>可能类似于< data_dir> /< keyspace> /< columnfamily> /

>启动Cassandra

注意:这些清单并不完全彻底

在这种情况下,运行nodetool修复并不是一个坏主意.假设您只想在本地计算机上重新创建生产节点(如问题中所述),那么由于快照具有当前数据,因此可能没有实际意义.如果修复被认为是必要的,那么运行nodetool清理也不会受到伤害.

回答你的问题:

如果您只是复制数据目录并且生产中的提交日志到您的本地计算机上将无法正常工作,因为您需要重新创建键空间和列族以放入数据.如果您这样做了,那么其他的东西就可以了.要从一个cassandra环境获取数据到下一个,配置文件,数据目录(commitlogs,data,saved_cache等)和模式脚本是最重要的.从那里你可能可以调试问题.全新安装(或将当前数据/ commitlog / etc目录重新映射到新目录,即new_data,new_commitlog,new_saved_cache)可能是完成任务的最简单方法.

点赞