我在一个简单的 scylla 集群上有大约 60GB 的数据,我想将它们迁移到 Cassandra 4.1.5。我已经用命令在 scylla 上拍摄了快照
nodetool snapshot -t scylla-20240524 --table <table> <keystore>
我现在尝试将其导入 Cassandra 运行
bin/sstableloader -d localhost -k <keystore> /mnt/scylla-20240524
但我得到以下输出:
Established connection to initial hosts
Opening sstables and calculating sections to stream
Skipping file me-4332-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4333-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4334-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4335-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4400-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4401-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4402-big-Data.db: table <keystore>.scylla doesn't exist
Skipping file me-4403-big-Data.db: table <keystore>.scylla doesn't exist
Summary statistics:
Connections per host : 1
Total files transferred : 0
Total bytes transferred : 0.000KiB
Total duration : 3954 ms
Average transfer rate : 0.000KiB/s
Peak transfer rate : 0.000KiB/s
我在 scylla 模式中找不到“scylla”作为表...我应该做些什么来准备 cassandra 模式?或者还有什么?
问题与您传递到的目录有关
sstableloader
。运行命令的格式为:其中
table_name/
必须是您正在克隆的表的名称以及包含数据文件的子目录。在您的情况下,您提供的路径是/mnt/scylla-20240524
这样的,加载器命令认为表名称是scylla
。您需要将快照的内容复制到遵循格式的目录结构中
ks_name/table_name/
。如果您感兴趣,我之前在如何将表中的数据迁移到新的 Cassandra 集群?中编写了将数据从一个集群克隆到另一个集群的分步过程。。干杯!
另一种选择是利用这个完全 OSS DSBulk工具,因为它可以很好地为您的用例无缝处理 60GB。
它可以像这个命令一样简单,
注意:这不使用本地存储,因为我们使用管道函数直接利用源集群中卸载的行并将它们加载到目标集群。
资源