【问题标题】:Issue num_tokens on cassandra after perform a node restore - Cassandra 3.11.10 and 3.11.11执行节点还原后在 cassandra 上发出 num_tokens - Cassandra 3.11.10 和 3.11.11
【发布时间】:2021-11-27 16:34:09
【问题描述】:

从 3.0.13 升级到 3.11.10 后,我在从节点恢复数据时遇到问题。还原完成后,它会将令牌的数量从 256 更改为 512。在 cassandra.yaml 中它仍然是 num_token: 256,所以我不知道这里发生了什么。

这些是我正在执行的步骤

rm -rf /var/lib/cassandra/data/*
rm -rf /var/lib/cassandra/commitlog/*
rm -rf /var/lib/cassandra/saved_caches/*
rm -rf /var/lib/cassandra/hints/*
rm -rf /var/log/cassandra/*
tar -xvf $BACKUP_LOC/$BACKUP_NAME.tar -C /
find ${DATA_DIR} -mindepth 2 -path "*/snapshots/${BACKUP_NAME}/*" -type f \-exec bash -c 'dir={} && cd ${dir%/*} && mv {} ../..' \;

nodetool -u $NODETOOL_USR -pw $NODETOOL_PASSWD -h $(hostname) refresh $keyspace $table --ssl" >>$BACKUP_LOC/nodetool_refresh_commands.sh

当我在执行上述步骤后重新启动节点时,它会将令牌从 256 更改为 512。

错误:

ERROR [main] 2021-10-07 15:16:24,060 CassandraDaemon.java:803 - 致命配置错误 org.apache.cassandra.exceptions.ConfigurationException:无法将令牌数从 512 更改为 256 在 org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:1102) ~[apache-cassandra-3.11.11.jar:3.11.11] 在 org.apache.cassandra.service.StorageService.initServer(StorageService.java:760) ~[apache-cassandra-3.11.11.jar:3.11.11] 在 org.apache.cassandra.service.StorageService.initServer(StorageService.java:694) ~[apache-cassandra-3.11.11.jar:3.11.11] 在 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:395) [apache-cassandra-3.11.11.jar:3.11.11] 在 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:633) [apache-cassandra-3.11.11.jar:3.11.11] 在 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:786) [apache-cassandra-3.11.11.jar:3.11.11] INFO [StorageServiceShutdownHook] 2021-10-07 15:16:24,064 HintsService.java:209 - 暂停提示调度 INFO [StorageServiceShutdownHook] 2021-10-07 15:16:24,064 Gossiper.java:1683 - 宣布关闭

有什么想法吗? 谢谢,

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

    这里的问题是你已经删除了data/目录的所有内容,包括系统键空间/表:

    rm -rf /var/lib/cassandra/data/*
    

    您不应该从备份中恢复系统表 - 您应该只恢复应用程序键空间/表。

    此异常的最可能原因:

    ERROR [main] 2021-10-07 15:16:24,060 CassandraDaemon.java:803 - \
      Fatal configuration error org.apache.cassandra.exceptions.ConfigurationException: \
      Cannot change the number of tokens from 512 to 256
    

    system.local 表是否已损坏。

    如果您尝试为system.local 转储其中一个 SSTable 的内容,您会看到它将包含 512 个令牌。例如:

    $ sstabledump me-1234-big-Data.db
    ...
              { "name" : "tokens", "path" : [ "-1090765148586270517" ], "value" : "", "tstamp" : "2021-10-12T01:23:45.678Z" },
              { "name" : "tokens", "path" : [ "-1118040538640756774" ], "value" : "", "tstamp" : "2021-10-12T01:23:45.678Z" },
              { "name" : "tokens", "path" : [ "-1256255083036528868" ], "value" : "", "tstamp" : "2021-10-12T01:23:45.678Z" },
    ...
    
    $ sstabledump me-1234-big-Data.db | grep -c tokens
    512
    

    一旦system.local 表损坏,就没有可用的解决方法。唯一的解决方案是完全擦除所有 C* 目录并重新引导节点。干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多