Проблемы миграции на Apache Cassandra 3.11.3 с DSE 5.0.9 - PullRequest
0 голосов
/ 10 декабря 2018

Мы собираемся перейти с DSE 5.0.9 на Apache Cassandra 3.11.3.Мы довольно далеко продвинулись и смогли решить различные проблемы (включая проблему EverywhereStrategy), но столкнулись с проблемой с таблицей system.local.

Миграция / обновление выполнялись только на одном сервере, пока,Когда мы запускаем Cassandra 3.11.3 на этом одном узле, мы получаем ошибку при загрузке system.local:

INFO [main] 2018-12-07 10:56:12,963 ColumnFamilyStore.java:411 - Initializing system.local
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
ERROR [SSTableBatchOpen:1] 2018-12-07 10:56:13,013 DebuggableThreadPoolExecutor.java:239 - Error in ThreadPoolExecutor
java.lang.RuntimeException: Unknown column server_id during deserialization
at org.apache.cassandra.db.SerializationHeader$Component.toHeader(SerializationHeader.java:321) ~[apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.io.sstable.format.SSTableReader.open(SSTableReader.java:522) ~[apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.io.sstable.format.SSTableReader.open(SSTableReader.java:385) ~[apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.io.sstable.format.SSTableReader$3.run(SSTableReader.java:570) ~[apache-cassandra-3.11.3.jar:3.11.3]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_172]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_172]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_172]
at org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:81) [apache-cassandra-3.11.3.jar:3.11.3]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_172]

Глядя на другой кластер Cassandra 3.11.3, который у нас здесь, system_id не существует в таблице,Однако в версии таблицы DSE 5.0.9 это так.Не имея возможности загрузить system.local, мы в итоге получаем следующее предупреждение:

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).

(нет идентификатора хоста, так как system.local не загружался), что приводит к следующей ошибке:

ERROR [main] 2018-12-06 10:43:58,295 CassandraDaemon.java:708 - Exception encountered during startup
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.
at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:558) ~[apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:804) ~[apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:664) ~[apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.service.StorageService.initServer(StorageService.java:613) ~[apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:379) [apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:602) [apache-cassandra-3.11.3.jar:3.11.3]
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:691) [apache-cassandra-3.11.3.jar:3.11.3]

В этот момент system.local был перезаписан и сохранено новое значение идентификатора хоста, а Cassandra завершила работу.

Добавление -Dcassandra.replace_node=<ip address> в cassandra-env.sh приводит кошибка, свидетельствующая о том, что узел уже был загружен, поэтому его нельзя использовать.Я знаю, что могу обойти это, удалив все данные, но я действительно не хочу этого делать.

Восстановление резервной копии system.local позволит нам снова запустить DSE.В настоящее время узел снова работает DSE5.0.9

Кто-нибудь видел эту проблему раньше, и есть ли у вас какие-либо советы по ее решению?

1 Ответ

0 голосов
/ 11 декабря 2018

Шаги:

  1. Точные доступные конфигурации, скопированные из DSE в OSS C *.
  2. Изменено несколько пространств ключей / таблиц:

    изменить пространство ключей dse_system с помощьюreplication = {'class': 'NetworkTopologyStrategy', 'DC3': '3'};// DC1, DC2 = OSS C *

    // если вы используете таблицу изменения искры cfs_archive.sblocks с compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold ':' 32 ',' min_threshold ':' 4 '};

    изменить таблицу cfs.sblocks с помощью compaction = {' class ':' org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy ','max_threshold ':' 32 ',' min_threshold ':' 4 '};

  3. auto_bootstrap: false JVM_OPTS = "$ JVM_OPTS -Dcassandra.allow_unsafe_replace = true" JVM_OPTS = "$ JVM_OPrats-dc.replace_address = ...

Будьте осторожны, проверьте все в нижнем env. Пожалуйста, перейдите по этой ссылке для получения дополнительной информации: https://www.mail-archive.com/user@cassandra.apache.org / msg58077.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...