从dse 5.0.9迁移到apache cassandra 3.11.3的问题

lsmepo6l  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(334)

我们正在考虑从dse5.0.9迁移到apachecassandra3.11.3。我们已经走了相当远,并设法解决了各种问题(包括everywherestrategyone),但遇到了system.local表的问题。
到目前为止,迁移/升级只在一台服务器上完成。在这个节点上启动cassandra 3.11.3时,加载system.local时出现错误:

  1. INFO [main] 2018-12-07 10:56:12,963 ColumnFamilyStore.java:411 - Initializing system.local
  2. INFO [SSTableBatchOpen:1] 2018-12-07 10:56:12,993 BufferPool.java:230 - Global buffer pool is enabled, when pool is exhausted (max is 512.000MiB) it will allocate on heap
  3. ERROR [SSTableBatchOpen:1] 2018-12-07 10:56:13,013 DebuggableThreadPoolExecutor.java:239 - Error in ThreadPoolExecutor
  4. java.lang.RuntimeException: Unknown column server_id during deserialization
  5. at org.apache.cassandra.db.SerializationHeader$Component.toHeader(SerializationHeader.java:321) ~[apache-cassandra-3.11.3.jar:3.11.3]
  6. at org.apache.cassandra.io.sstable.format.SSTableReader.open(SSTableReader.java:522) ~[apache-cassandra-3.11.3.jar:3.11.3]
  7. at org.apache.cassandra.io.sstable.format.SSTableReader.open(SSTableReader.java:385) ~[apache-cassandra-3.11.3.jar:3.11.3]
  8. at org.apache.cassandra.io.sstable.format.SSTableReader$3.run(SSTableReader.java:570) ~[apache-cassandra-3.11.3.jar:3.11.3]
  9. at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_172]
  10. at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_172]
  11. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_172]
  12. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_172]
  13. at org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:81) [apache-cassandra-3.11.3.jar:3.11.3]
  14. at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_172]

看看我们这里的另一个cassandra3.11.3集群,表中不存在system\u id。但是,在dse 5.0.9版本的表中确实如此。在无法加载system.local的情况下,我们最终得到以下警告:

  1. WARN [main] 2018-12-06 10:43:57,241 SystemKeyspace.java:1087 - No host ID found, created a0bb8c11-2864-4d58-9c0c-59b97b16c48e (Note: This should happen exactly once per node).

(没有主机id,因为system.local未加载)这会导致以下错误:

  1. ERROR [main] 2018-12-06 10:43:58,295 CassandraDaemon.java:708 - Exception encountered during startup
  2. java.lang.RuntimeException: A node with address dubdc1-oatjeeramp2dmcassandra-04/10.109.158.254 already exists, cancelling join. Use cassandra.replace_address if you want to replace this node.
  3. at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:558) ~[apache-cassandra-3.11.3.jar:3.11.3]
  4. at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:804) ~[apache-cassandra-3.11.3.jar:3.11.3]
  5. at org.apache.cassandra.service.StorageService.initServer(StorageService.java:664) ~[apache-cassandra-3.11.3.jar:3.11.3]
  6. at org.apache.cassandra.service.StorageService.initServer(StorageService.java:613) ~[apache-cassandra-3.11.3.jar:3.11.3]
  7. at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:379) [apache-cassandra-3.11.3.jar:3.11.3]
  8. at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:602) [apache-cassandra-3.11.3.jar:3.11.3]
  9. at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:691) [apache-cassandra-3.11.3.jar:3.11.3]

此时,system.local已被覆盖并存储了新的主机id值,cassandra已关闭。
添加 -Dcassandra.replace_node=<ip address> 到cassandra-env.sh会导致一个错误,说明该节点已被引导,因此无法使用。我知道我可以通过删除所有数据来解决这个问题,但我真的不想这么做。
恢复system.local的备份将允许我们再次启动dse。当前该节点正在重新运行dse5.0.9
以前有人见过这个问题吗?你对如何解决这个问题有什么建议吗?

x7yiwoj4

x7yiwoj41#

步骤:
从dse复制到oss c的精确可用配置。
更改了几个键空间/表:
alter keyspace dse\u system with replication={'class':'networktopologystrategy','dc3':'3'}//dc1,dc2=oss c

//如果使用spark alter table cfs\u archive.sblocks with compression={'class':'org.apache.cassandra.db.compression.sizetieredcompactionstrategy','max\u threshold':'32','min\u threshold':'4'};
alter table cfs.sblocks with compression={'class':'org.apache.cassandra.db.compression.sizetieredcompactionstrategy','max\u threshold':'32','min\u threshold':'4'};
自动引导:false jvm\u opts=“$jvm\u opts-dcassandra.allow\u unsafe\u replace=true”jvm\u opts=“$jvm\u opts-dcassandra.replace\u address=。。。
小心,在低环境下测试所有东西。请通过此链接获取更多信息:https://www.mail-archive.com/user@cassandra.apache.org/msg58077.html

相关问题