我一直在使用Cassandra 2.1.7,出于某种原因,我升级到3.0.12,后来意识到一些依赖的应用程序将不能使用3.0.12,我降级和使用C * 2.1.7,因为我以前使用。 但现在我无法看到C *中的密钥空间。 (仅供参考:两个C * yaml文件中的数据目录是相同的)
我必须做任何改变吗?
感谢你的帮助。
从2.x升级到3.x时,必须在nodetool中运行upgradesstables命令。 我想这是你做的。 现在,当你降级到2.x时,Cassandra无法读取较新的SSTable格式。 不幸的是没有downgradesstables命令,所以你唯一的选择就是从第一次运行2.x的时候恢复备份。
如果你没有备份,那么没有什么可担心的,因为C * 3.0在升级之后不会删除旧版本的数据库,而只是更新了与sstable相关的CFS,并增加了一些CFS来兼容。
下面是我为保留数据所做的工作:由于3.0对数据库名称的命名约定完全不同,因此我们需要仔细区分数据库和旧数据库(旧版本还是更新版本)。
对于2.X Cassandra dbname对于每个ks都有以下约定:
keyspace-ColumnFamilyName-ka-ID-Data.db keyspace-ColumnFamilyName-ka-ID-Digest.sha1 keyspace-ColumnFamilyName-ka-ID-Filter.db keyspace-ColumnFamilyName-ka-ID-Index.db keyspace-ColumnFamilyName-ka-ID-Statistics.db keyspace-ColumnFamilyName-ka-ID-Summary.db keyspace-ColumnFamilyName-ka-ID-TOC.txt keyspace: keyspace name ColumnFimilyname : Name of the CF under keyspace ka: C* Internal(Haven't explored much on this) ID: It is incremental value I see different sets of these having different id.(looks like it is an increasing factor when it takes snapshot, not sure though) And the last parameter is db name
所以当我从2.1.7开始读取C *守护进程中的每个日志语句时,发现系统密钥空间下的sstable_actiivity文件不是实际的,因为这个文件的大小非常小。
/data/system/sstable_activity-5a1ff267ace03f128563cfae6103c65e/system-sstable_activity-ka-145
所以我试图从快照中找到系统(密钥空间目录ie / data / system /)下的最旧的文件,并用上面的文件替换它。 我也重复了系统密钥空间下的“schema_keyspaces”表。
现在我再次重新启动cassandra守护进程,幸运的是我可以在运行“ DESC KEYSPACES ”后得到密钥空间列表但是当我执行“ DESC TABLES”由sstable_activity找到。
现在我一直在“系统”键盘空间下重复所有其他表的进程。 如下所示:
schema_keyspaces schema_columnfamilies local schema_columns schema_triggers schema_usertypes
重新启动Cassandra之后,我能够检索到我的应用程序的预期日期。