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

时间:2016-06-15 12:58:43

标签: 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会抛出许多错误。

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

由于

2 个答案:

答案 0 :(得分:2)

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

来自制作:

  • 将数据从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)可能是完成任务的最简单方法。

答案 1 :(得分:0)

如果您有一个节点,则可以将/ data,/ saved_caches和/ commitlog文件夹复制到本地计算机。您需要相同版本的cassandra。但首先,您需要从生产中导出架构并导入到本地计算机。然后停止本地cassandra,删除local / commitlog文件夹的任何内容,将数据从prod复制到本地 - / data中的foldernames可能会有所不同,因为较新版本的c *会将UUID附加到tablename文件夹。但它会奏效。您可能必须在之后运行dat$unique.car <- make.unique(as.character(dat$cars)) dat2 <- data.frame(cars=levels(as.factor(dat$cars)),color=rainbow(nlevels(as.factor(dat$cars)))) dat2[] <- lapply(dat2, as.character) dat$color <- dat2$color[match(dat$cars,dat2$cars)] plot_ly() %>% add_trace(data=dat2, type = "bar", x = 0, y = 0, color = cars, colors=color, showlegend=T) %>% add_trace(data=dat, type = "bar", x = carb, y = mpg, color = unique.car, colors=color, showlegend=F, marker=list(line=list(color="black", width=1))) %>% layout(barmode = "stack", xaxis = list(range=c(0.4,8.5)))