2016-11-09 9 views
2

Предположим, хотите ли скопировать таблицу из кластера из 7 узлов с RF = '3' в другой кластер из 6 узлов с RF '3', как я могу это сделать? могу ли я копировать данные из любого узла в CSV-файл, а затем импортировать эти данные из файла CSV на любой узел в новом кластере? или должны копировать данные из каждого узла в кластере в новый кластер?Как COPY работает в cassandra, когда таблица реплицируется через множественные узлы в кластере?

следует ли уменьшить репликацию до 1, а затем скопировать данные и изменить репликацию на 3, но я думаю, что это не сработает в производстве? как я могу справиться с этим?

ответ

3

Его не то, что вам нужно запускать на каждом узле. Вы можете использовать команду COPY cqlsh для системы вне кластера. Восстановление кластера из sstables/commitlogs - это то, где вам нужно беспокоиться об этом (что также решает sstableloader).

Он будет читать все данные при использовании COPY TO, а при использовании COPY FROM он отправит каждую строку по пути записи, который будет распространяться в соответствии с вашим RF. Это сделано гораздо эффективнее, чем использование базового сценария чтения/записи, но в конечном итоге это то, что он делает.

0

Отметьте мое сообщение об этом, если у вас есть доступ к Spark (это лучший способ выполнить миграцию, если у вас много данных). Команда copy будет работать, если у вас нет большого количества данных.

www.sestevez.com/cluster-migration-keeping-simple-things-simple/

wget https://github.com/phact/dse-cluster-migration/releases/download/v0.01/dse-cluster-migration_2.10-0.1.jar 

dse spark-submit --class phact.MigrateTable --conf spark.dse.cluster.migration.fromClusterHost='<from host>' --conf spark.dse.cluster.migration.toClusterHost='<to host>' --conf spark.dse.cluster.migration.keyspace='<keyspace>' --conf spark.dse.cluster.migration.table='<table>' ./dse-cluster-migration_2.10-0.1.jar 

 Смежные вопросы

  • Нет связанных вопросов^_^