Требуется ли обновление cassandra для запуска таблиц обновлений nodetool для кластера, содержащего данные TTL - PullRequest
2 голосов
/ 22 марта 2019

Я использую кластер Apache Cassandra с 3 узлами в качестве док-контейнера, содержащего данные временных рядов с TTL за 45 дней.

Я планирую обновить текущую версию cassandra 2.2.5 до версии cassandra 3.11.4. Для обновления определены следующие шаги -

  1. Резервное копирование существующих данных
  2. Сброс одного из узлов кассандры

    bin / nodetool -h cassandra1 -u ca_itoa -pw ca_itoa сток

  3. Остановить узел cassandra1

  4. Запустить новый контейнер cassandra 3.11.4

  5. Обновление SSTable

    bin / nodetool -u ca_itoa -pw ca_itoa upgradedesstables

  6. Проверка статуса узла. Повторите процесс для остальных узлов

У меня есть несколько вопросов о процессе обновления -

  1. Правильны ли шаги?
  2. Обязательно ли запускать команду upgradedesstables. Это отнимает много времени, и я хочу посмотреть, смогу ли я избежать. Данные настроены на TTL. Будет ли кассандра продолжать писать в новом формате SSTable, тогда как старые данные SSTable будут очищены по истечении срока действия? Предполагается, что через 45 дней все SSTable будут в новом блестящем формате.

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Да, вам нужно запускать nodetool sstableupgrade на каждом узле после обновления cassandra при обновлении с 2.2.x до 3.11.4.Формат файла sstable и ext также изменятся.Вы можете запустить этот процесс в фоновом режиме, и это не создаст никаких проблем.Пожалуйста, обратитесь к ссылкам ниже для более подробной информации https://blog.thethings.io/upgrading-apache-cassandra-cluster/

0 голосов
/ 06 апреля 2019

Просто некоторые дополнительные мысли:

Для Шаг # 6 , вам на самом деле не нужно сразу запускать upgradesstables. На самом деле, если вы модернизируете производственную систему, вероятно, лучше не делать этого, пока команда приложений не проверит, что они могут нормально подключиться. Помните, что старые версии драйверов, которые работают в 2.2, могут не работать с 3.11.4.

С этой целью я бы подождал, пока весь кластер не будет работать в новой версии , прежде чем запустит upgradesstables на каждом узле.

Нужно ли вводить команду upgradedesstables?

Поскольку каждая версия Cassandra способна считывать свой собственный формат SSTable, а также предыдущую основную версию, я думаю, что это не обязательный . Но это определенно то, что вы должны хотеть сделать. Особенно при обновлении до 3.x.

Cassandra 3 содержит существенное обновление до механизма хранения, в результате чего значительно меньше места на диске. В одном обновленном кластере потребности в дисках сократились на 90% .

Кроме того, вы будете испытывать дополнительные задержки при чтении записей, которые могут распространяться как на старые файлы SSTable, так и на новые. Чтение записей в нескольких файлах достаточно плохо Но теперь вы заставляете Кассандру читать и сопоставлять результаты в двух форматах.

Так что, хотя я бы не сказал, что это «обязательно», я бы определенно сказал, что это квалифицируется как «хорошая идея».

...