Могу ли я добавить Apache узлов cassandra в кластер cassandra DataStax (DSE)? - PullRequest
3 голосов
/ 05 мая 2020

Я нахожусь в процессе перехода с Datastax (DSE) Cassandra на Apache Cassandra 3.11.

У меня есть кластер из 7 узлов Datastax (DSE) Cassandra.

Есть ли способ создать новый кластер apache Cassandra и подключить его к DSE Cassandra, чтобы я записывал go как в DSE, так и Apache cassandra

Так что, как только мои данные будут записаны в обе Cassandra, я могу постепенно перенести свой API чтения с DSE на Apache.

1 Ответ

1 голос
/ 05 мая 2020

Да, я делал это раньше.

Прежде всего, найдите точную версию версии Cassandra (не версию DSE), на которой работает ваш кластер:

SELECT release_version FROM system.local;

 release_version
-----------------
          3.11.4

Вы также можете увидеть этот номер версии при соединении с cqlsh. К DSE-версии Cassandra будет добавлен (длинный) номер сборки. Но идея состоит в том, что версия Apache Cassandra на новых узлах должна максимально соответствовать DSE-версии Cassandra.

Затем создайте свои Apache «замещающие» узлы Cassandra как новый логический центр обработки данных . Убедитесь, что они используют dc_name (отличные от существующих узлов) в файле cassandra-rackdc.properties. Первый узел (или два) должен использовать узлы из существующего кластера в качестве начальных узлов. Следующие узлы могут затем использовать первые узлы как начальные. Кроме того, cluster_name должен соответствовать.

Теперь проверьте определения пространств ключей для system_auth, system_traces, system_distributed и любых пространств клавиш, которые необходимы приложению. Убедитесь, что они используют NetworkTopologyStrategy. Если нет, убедитесь, что это так, и настройте коэффициент репликации (RF) для существующего D C (имя D C должно соответствовать dc_name существующих узлов DSE). Затем вы можете расширить репликацию на новый центр обработки данных.

Если текущий dc_name равен DSE_DC, а новый dc_name равен AC_DC, тогда:

ALTER KEYSPACE yourkeyspace WITH replication =
   {'class': 'NetworkTopologyStrategy',
    'DSE_DC': '3', 'AC_DC': '3'};

После этого изменение выполнено, запустите перестроение nodetool на каждом новом Apache узле Cassandra .

nodetool rebuild -- DSE_DC

Это переместит данные из из DSE_DC в текущий узел. Затем вы сможете переключить свой API, указав новое имя центра обработки данных.

Изменить 20200506

Проверьте каталоги данных. Самая важная вещь, которая должна соответствовать, чтобы это работало, - это формат SSTable.

ver 3.11.4 +

    43 Feb 20 08:55 md-1-big-CompressionInfo.db
    83 Feb 20 08:55 md-1-big-Data.db
    10 Feb 20 08:55 md-1-big-Digest.crc32
    16 Feb 20 08:55 md-1-big-Filter.db
    17 Feb 20 08:55 md-1-big-Index.db
  4769 Feb 20 08:55 md-1-big-Statistics.db
    57 Feb 20 08:55 md-1-big-Summary.db
    92 Feb 20 08:55 md-1-big-TOC.txt

ver 4.0-alpha4:

    47 May  6 10:13 na-1-big-CompressionInfo.db
   107 May  6 10:13 na-1-big-Data.db
    10 May  6 10:13 na-1-big-Digest.crc32
    16 May  6 10:13 na-1-big-Filter.db
    32 May  6 10:13 na-1-big-Index.db
  4687 May  6 10:13 na-1-big-Statistics.db
    66 May  6 10:13 na-1-big-Summary.db
    92 May  6 10:13 na-1-big-TOC.txt

Вы также можете проверить это в Руководстве по совместимости продуктов DataStax .

В основном, если ваши файлы SSTable имеют префикс m [a, b, c, d], то 3.11.6 должно работать.

...