升级Cassandra后恢复数据

时间:2016-02-27 18:08:31

标签: cassandra datastax datastax-enterprise

我尝试从Cassandra升级到最新的Datastax Enterprise,一切都很顺利,除了我无法恢复数据的事实。

基本上,升级后我有一个干净的cassandra,然后我重新创建了模式,并尝试以某种方式将旧数据库中剩余的文件链接到新数据库。

这就是我现在在/var/lib/cassandra/data/wowch目录中所拥有的内容,例如:

drwxr-x---  4 cassandra cassandra 4.0K Feb 27 13:05 users-247834809d2011e58d82b7a748b1d9c2/
drwxr-xr-x  2 cassandra cassandra 4.0K Feb 27 18:53 users-f41a5300dd5611e58bc7b7a748b1d9c2/

正如我所知,旧目录是升级前数据库中的内容。它包含一些db文件:

total 144K
drwxr-x---  4 cassandra cassandra 4.0K Feb 27 13:05 ./
drwxr-x--- 60 cassandra cassandra  20K Feb 27 14:35 ../
drwxr-x---  2 cassandra cassandra 4.0K Dec  7 21:21 backups/
-rwxr-x---  2 cassandra cassandra   51 Jan 20 00:05 ma-46-big-CompressionInfo.db*
-rwxr-x---  2 cassandra cassandra  828 Jan 20 00:05 ma-46-big-Data.db*
-rwxr-x---  2 cassandra cassandra   10 Jan 20 00:05 ma-46-big-Digest.crc32*
-rwxr-x---  2 cassandra cassandra   16 Jan 20 00:05 ma-46-big-Filter.db*
-rwxr-x---  2 cassandra cassandra   83 Jan 20 00:05 ma-46-big-Index.db*
-rwxr-x---  2 cassandra cassandra 4.9K Jan 20 00:05 ma-46-big-Statistics.db*
-rwxr-x---  2 cassandra cassandra   92 Jan 20 00:05 ma-46-big-Summary.db*
-rwxr-x---  2 cassandra cassandra   92 Jan 20 00:05 ma-46-big-TOC.txt*
-rwxr-x---  2 cassandra cassandra   43 Feb 12 15:05 ma-47-big-CompressionInfo.db*
-rwxr-x---  2 cassandra cassandra   41 Feb 12 15:05 ma-47-big-Data.db*
-rwxr-x---  2 cassandra cassandra   10 Feb 12 15:05 ma-47-big-Digest.crc32*
-rwxr-x---  2 cassandra cassandra   16 Feb 12 15:05 ma-47-big-Filter.db*
-rwxr-x---  2 cassandra cassandra   20 Feb 12 15:05 ma-47-big-Index.db*
-rwxr-x---  2 cassandra cassandra 4.5K Feb 12 15:05 ma-47-big-Statistics.db*
-rwxr-x---  2 cassandra cassandra   92 Feb 12 15:05 ma-47-big-Summary.db*
-rwxr-x---  2 cassandra cassandra   92 Feb 12 15:05 ma-47-big-TOC.txt*
-rwxr-x---  2 cassandra cassandra   43 Feb 12 16:05 ma-48-big-CompressionInfo.db*
-rwxr-x---  2 cassandra cassandra  169 Feb 12 16:05 ma-48-big-Data.db*
-rwxr-x---  2 cassandra cassandra   10 Feb 12 16:05 ma-48-big-Digest.crc32*
-rwxr-x---  2 cassandra cassandra   16 Feb 12 16:05 ma-48-big-Filter.db*
-rwxr-x---  2 cassandra cassandra   20 Feb 12 16:05 ma-48-big-Index.db*
-rwxr-x---  2 cassandra cassandra 4.9K Feb 12 16:05 ma-48-big-Statistics.db*
-rwxr-x---  2 cassandra cassandra   92 Feb 12 16:05 ma-48-big-Summary.db*
-rwxr-x---  2 cassandra cassandra   92 Feb 12 16:05 ma-48-big-TOC.txt*
-rwxr-x---  1 cassandra cassandra   31 Dec  7 21:26 manifest.json*
drwxr-x---  3 cassandra cassandra 4.0K Feb 27 13:05 snapshots/

我尝试将所有内容从此处复制到users-f41a5300dd5611e58bc7b7a748b1d9c2/目录并运行nodetool repairnodetool refresh -- wowch users但未成功 - 数据仍未加载。

我忘了什么吗?这样做的正确方法是什么以及如何获取数据?

2 个答案:

答案 0 :(得分:0)

根据您之前运行的Cassandra / DSE版本,您可能需要运行nodetool upgradesstables。你可以在这里看到文档。

https://docs.datastax.com/en/cassandra/2.0/cassandra/tools/toolsUpgradeSstables.html

答案 1 :(得分:0)

您可能遇到this issue,但没有更多信息,我无法肯定地说。

您还没有提供有关您开始和结束的版本的信息。多一点信息会非常有帮助。你能澄清一下 - 你是从社区Cassandra升级到DSE吗?我无法从问题措辞的方式说出来。

要检查的内容:您是否拥有旧版本的令牌分配?我没有使用vnodes,我发现在备份/恢复群集后我必须在cassandra.yaml中手动设置initial_token。确保cassandra拥有所有dirs和文件。导入架构后,停止DSE,然后清空commitlog目录的内容。如有必要,将数据移动到新文件夹中,然后重新启动DSE。希望这会有所帮助。