2016-04-20 3 views
0

У меня есть кластер с двумя машинами (centos7 и cassandra 3.4), 192.168.0.175 и 192.168.0.174. Семя - 192.168.0.175.Изменение имени кластера в Cassandra

Я просто хочу изменить имя кластера. Мир торта должен быть.

я на каждом кластере:

  • update system.local set cluster_name = 'America2' where key='local';

  • я сделал nodetool флеш

  • я обновил cassandra.yaml с новым именем

  • перезапущен Cassandra ,

Когда я cqlsh любой, если описывает меня подключен к новой cluster_name America2

Когда я бегу nodetool describecluster это показывает старое имя кластера America

Если я остановить Кассандры на обеих машинах, и я стараюсь перезапустить их я найти в журналах хорошую старую ошибку:

org.apache.cassandra.exceptions.ConfigurationException: Saved cluster name America != configured name America2

Так .... то, что я делаю не так !?

+0

Я думаю, вам может понадобиться декомпозиция узлов, остановить их, изменить имя кластера в yaml, а затем перезагрузить – Whitefret

+0

Я думаю, что вы были недалеко от решения: http://stackoverflow.com/questions/22006887/cassandra -saved-cluster-name-test-cluster-setup-name – Whitefret

+0

От этого я чувствую, что '' 'обновление system.local'' не выполняет эту работу. Из того, что я понимаю, когда Cassie запускает проверки, как cassandra.yaml, так и system.local. Если имя проверяется в обоих местах, все должно возникнуть без каких-либо проблем. Итак, о cassandra.yaml, я уверен ... не уверен, что я внес изменения в system.local persistent. –

ответ

2

перед сменой имени кластера

  1. удаления узла из кластера кольца

    nodetool списании

  2. остановки узла и имя изменения кластера в Кассандре.YAML

  3. чистый узел

    Судо гт -rf/вар/Библиотека/Cassandra/*/вар/Журнал/Cassandra/*

  4. начало Cassandra узел

Более подробную информацию вы можно найти на странице academy.datastax.com

+0

Но кластер свежий, но с учетом производства, и у вас есть некоторые данные, если я следуйте шагу 3, я могу потерять некоторые !? –

+0

вывод из эксплуатации - это инструмент, чтобы быть уверенным, что вы не потеряете какие-либо данные –

0

Это действительно невозможно. У меня такая же проблема. Я решил это по-настоящему грязно. Я написал сценарий, где я получил все данные семейства столбцов. Просто: резервная копия. Затем я сделал это на каждом узле: я остановил cassandra, я уронил все данные cassandras, кеш и т. Д. (Вы также можете переустановить cassandra.) Я создал новый кластер, импортировавший мою резервную копию. И я сделал это для каждого узла.

+0

op использует флеш, это означает, что он не заботится о потере данных нет? – Whitefret

+0

ОК, не то же самое, мой плохой. но я видел это: http://stackoverflow.com/questions/22006887/cassandra-saved-cluster-name-test-cluster-configured-name – Whitefret

1

Хорошо, ребята, что я сделал:

cqlsh с каждой машиной и:

update system.local set cluster_name = 'canada' where key='local' ; затем

$ nodetool flush -- system

тогда я купируются службу на обеих машинах.

изменен cassandra.yaml с новым названием кластера canada.

начал работу с машинами, они работали с новым названием кластера.

Эти шаги можно выполнить без остановки всех машин в кластере, вынимая их один за другим (я думаю, что после каждого ремонта может потребоваться ремонт на каждом узле). Подумайте об изменении семян в первую очередь.