【发布时间】:2016-05-04 23:32:00
【问题描述】:
我有两台不同的独立机器运行 Cassandra,我想将数据从一台机器迁移到另一台。
因此,我首先根据datastax documentation 在机器 1 上拍摄了我的 Cassandra 集群的快照。
然后我将数据移动到机器 2,并尝试使用 sstableloader 将其导入。
注意:机器 2 上的键位 (open_weather) 和表名 (raw_weather_data) 已创建,与机器 1 上的相同。
我使用的命令如下:
bin/sstableloader -d localhost "path_to_snapshot"/open_weather/raw_weather_data
然后得到如下错误:
Established connection to initial hosts
Opening sstables and calculating sections to stream
For input string: "CompressionInfo.db"
java.lang.NumberFormatException: For input string: "CompressionInfo.db"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:276)
at org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:235)
at org.apache.cassandra.io.sstable.Component.fromFilename(Component.java:120)
at org.apache.cassandra.io.sstable.SSTable.tryComponentFromFilename(SSTable.java:160)
at org.apache.cassandra.io.sstable.SSTableLoader$1.accept(SSTableLoader.java:84)
at java.io.File.list(File.java:1161)
at org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:78)
at org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:162)
at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:106)
很遗憾,我不知道为什么?
我不确定它是否与问题有关,但不知何故,在机器 1 上,与机器 2 上已有的 *.db 文件相比,我的 *.db 文件的名称相当“奇怪”。
*.db 来自机器 1 的文件:
la-53-big-CompressionInfo.db
la-53-big-Data.db
...
la-54-big-CompressionInfo.db
...
来自机器 2 的 *.db 文件:
open_weather-raw_weather_data-ka-5-CompressionInfo.db
open_weather-raw_weather_data-ka-5-Data.db
我错过了什么?任何帮助将不胜感激。我也愿意接受任何其他建议。 COPY 命令很可能不起作用,因为据我所知,它仅限于 99999999 行。
附:我不想创建过大的帖子,但如果您需要任何进一步的信息来帮助我,请告诉我。
编辑: 请注意,我在单机模式下使用 Cassandra。
编辑2: 在我的目标机器(机器 2)上安装相同的 2.1.4 版本后,我仍然得到所有相同的错误。使用 SSTableLoader,我仍然会遇到上述错误,并且手动复制文件(如 LHWizard 所述),在再次启动 Cassandra 并执行 SELECT 命令后,我仍然会得到空表。
关于初始令牌,如果我在机器 1 上执行节点环,我会得到一个巨大的令牌列表。我不确定如何处理这些令牌?
【问题讨论】:
-
第二台机器是没有其他数据的新节点吗?
-
第二台机器具有与第一台机器相同的键空间和表。最初它也有一些价值。我首先尝试使用内部的其他数据,然后使用空表。两种情况下的结果相同。