【问题标题】:How to copy/migrate data from one keyspace to another in cassandra?如何在 cassandra 中将数据从一个键空间复制/迁移到另一个键空间?
【发布时间】:2020-01-01 20:38:11
【问题描述】:

我需要将数据从 keyspace database1 复制到 keyspace database18。

使用 csql COPY 命令不是一个选项(至少我不知道如何制作这样的脚本),因为我有 103 个不同的表,其中包含所有可以想象的列。

已创建键空间,已应用架构。

我已经尝试制作快照然后复制 (mv)

1。 mv /data/cassandra/data/database1/tables/snapshot/copy/* /data/cassandra/data/database18/表格/*

  1. nodetool 刷新数据库18 tablesOneByOne
  2. nodetool 修复数据库18

我还尝试重新启动我的一台服务器:

  1. nodetool disablegossip

  2. nodetool 排水

  3. 重启

新的键空间表中没有数据。

当我输入 csql 使用数据库18; 从表 1 中选择 *;

我收到一个空表“(0行)”

Cassandra 版本为:[cqlsh 5.0.1 |卡桑德拉 2.1.17.1439

也许我缺少一些东西或存在不同的方法来实现这一点?

欢迎任何帮助或建议,谢谢!!!

【问题讨论】:

  • 请提供您之前尝试过的代码。
  • 你有多少个节点?
  • 我有 3 个节点。
  • @ConstantinBeer 对不起,我错过了你的问题,我刚刚从 /data/cassandra/data/database1/tables/snapshot/copy/* 中的每个文件夹中完成了“mv”到“同一文件夹”/数据/cassandra/data/database18/tables/*

标签: database cassandra migration cassandra-2.0


【解决方案1】:

我猜你的选择是: 1) cql 复制和/或 dse 批量 2) 稳定加载器 3) 代码 4) 第 3 方产品(我们有一个用于备份和恢复的产品 - 如果需要,可以对不同的集群执行此操作(以前为 Talena,以前为 Imanis,现在为 Cohesity

如果表很大,而节点数很小,我会说使用 sstableloader。效果很好。

-吉姆

【讨论】:

  • 感谢您的回答,我将尝试使用您提到的选项。在第三个选项中,您的意思是制作一个可以在循环中执行的脚本或其他什么?
  • #3 我的意思是编写自己的 java 代码,连接到两个集群,从一个集群读取并写入另一个集群。您拥有完全的控制权,但每次都为此编写代码并不理想。
  • 作为#3,我使用导出/导入 js 脚本。我在这里发布了类似问题的答案stackoverflow.com/a/63842723/586609
猜你喜欢
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 2017-03-22
  • 2017-01-01
  • 2015-01-14
  • 1970-01-01
  • 2021-10-12
  • 2016-08-01
相关资源
最近更新 更多