Scylla sstableloader在将SSTable从Cassandra复制到Scylla时出现错误?

5
我正在使用Cassandra 3.0.15v,并希望使用Scylla提供的sstableloader实用程序将我的数据移动到Scylla db 3.3.0v,我已经尝试了不同的方法,但是仍然无法完成。
表模式如下:
CREATE TABLE events.test (
    "Id1" text,
    "Id2" text,
    "event" set<text>,
    PRIMARY KEY ("Id1", "Id2")
) 
WITH CLUSTERING ORDER BY ("Id2" ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'ALL'}
    AND comment = ''
    AND compaction = {'class': 'SizeTieredCompactionStrategy'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE';

我的操作步骤如下:

  1. 对表格进行了快照。
  2. 将快照复制到Scylla服务器上。
  3. 运行以下命令:sstableloader --nodes serverIP keySpace/tableName

运行上述命令后,其响应如下:

com.datastax.driver.core.exceptions.SyntaxError: line 1:75  : missing elements...

我无法理解我在这里做错了什么。因此,任何帮助都将不胜感激。

刚才找到了使用journalctl _COMM=scylla命令的这些日志。

cql_server - exception while processing connection: std::system_error (error system:32, sendmsg: Broken pipe)
Apr 22 14:54:02 ip-1-0-4-100 scylla[1371]:  [shard 0] cql_server - exception while processing connection: std::system_error (error system:32, sendmsg: Broken pipe)
Apr 22 14:54:02 ip-1-0-4-100 scylla[1371]:  [shard 2] cql_server - exception while processing connection: std::system_error (error system:32, sendmsg: Broken pipe)
Apr 22 15:35:33 ip-1-0-4-100 scylla[1371]:  [shard 3] cql_server - exception while processing connection: std::system_error (error system:32, sendmsg: Broken pipe)
lines 3484-3523/3523 (END)

你能提供更多关于错误的细节吗?或者检查一下 Scylla 日志。 - LetsNoSQL
2
我添加了一些我发现的日志。 - Yash Tandon
你是使用Scylla或Cassandra附带的stableloader吗?它们不同。 - dyasny
2
@dyasny 在帖子中已经写明了:“使用Scylla提供的sstableloader实用程序...” :-) - TomerSan
在运行sstableloader之前,我还会检查模式是否已经在新集群中创建。 - Moreno Garcia
是的,在运行 sstableloader 之前已经创建了模式。 - Yash Tandon
1个回答

8
在Cassandra和Scylla之间的表属性存在一些细微差别,这可能是错误的原因。需要对模式进行轻微更改。
您是否尝试按照此Cassandra到Scylla迁移文档中的步骤操作? https://docs.scylladb.com/operating-scylla/procedures/cassandra_to_scylla_migration_process/ 请特别注意文档底部的模式差异以及限制和已知问题。
另一个很好的来源是关于迁移策略的博客(如果您愿意考虑除之外的其他方法),那里还有一个关于该主题的网络研讨会链接。 https://www.scylladb.com/2019/04/02/spark-file-transfer-and-more-strategies-for-migrating-data-to-and-from-a-cassandra-or-scylla-cluster/ 祝你好运!

我在两者之间寻找差异时发现,在 Scylla 中不支持 crc_check_chance,所以我将其从模式定义中删除,并创建了一个新的模式。但是在描述新模式时,相同选项仍然存在,不知道为什么?另外,我已经编辑了问题并添加了我的表格模式。 - Yash Tandon
我们在您的模式中没有立即看到问题。这可能与其他事情有关 - 也许是硬件或负载相关的。我建议您提交一个 Github 问题 https://github.com/scylladb/scylla/issues。 - Greg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接