Я пытаюсь перенести данные из кластера из 7 узлов (с одним DC) в кластер из 21 узла (3 DC) с помощью sstableloader.
- У нас есть одинаковые версии как для старых, так и для новых кластеров.
cqlsh 5.0.1
Cassandra 2.1.13
CQL spec 3.2.1
- Oldи новые кластеры в разных сетях.Итак, мы открыли между ними следующие порты:
7000 - порт хранения
7001 - порт хранения ssl
7199 - порт JMX
9042- клиентский порт
9160 - Экономичный клиентский порт
- Мы используем vnodes в кластерах.
- Мы убедились, что файл cassandra.yaml в новом кластере задан правильноизменив следующие параметры,
имя_кластера: 'MyCassandraCluster'
num_tokens: 256
seed: "10.168.66.41,10.176.170.59"
listen_address: localhost
endpoint_snitch: GossipingPropertyFileSnitch
А также изменения в свойствах cassaandra-rackdc для каждого DC путем указания соответствующих DC и стойки.
при создании пространств ключей изменил Replication на NetworkTopologyStratagy.
кластер выглядит исправным, все узлы работают и НОРМАЛЬНО.
Я смог получить данные из старого кластера в новый кластер.Но наряду с данными из старого кластера я вижу, что в таблицах нового кластера заполняются некоторые новые строки, а данные дублируются в таблицах с типом пользователя.
Мы использовали следующие шаги для переноса данных:
1.Взял snapshorts для всех клавишных пространств, которые мы хотим перенести.(9 клавиш).Использовал команду снимка узла nodetool на исходных узлах, чтобы сделать снимок необходимого пространства ключей / таблицы, указав имя хоста, порт jmx и пространство ключей __ / a / cassandra / bin / nodetool -u $ (sudo su - company -c "cat / a / cassandra /jmxremote.password "| awk '{print $ 1}') -pw $ (sudo su - company -c" cat /a/cassandra/jmxremote.password "| awk '{print $ 2}') -h localhost -p снимок 7199keyspace_name
2.После создания моментальных снимков переместите этот каталог моментальных снимков с исходных узлов на целевой.
→ Создайте файл tar на исходном узле для каталога моментальных снимков, который мы хотим переместить на целевой узел.tar -cvf file.tar snapshot_name
→ Переместить этот file.tar из исходного узла на локальный компьютер.scp -S gwsh root@192.168.64.99: /a/cassandra/data/file.tar.
→ Теперь переместите этот file.tar с локального компьютера в новый каталог (пример: test) в целевом узле,scp -S gwsh file.tar root@192.168.58.41: / a / cassandra / data / test /.
3.Теперь распакуйте этот file.tar в тестовом каталоге на целевом узле.
Путь к sstables должен быть одинаковым как в исходном, так и в целевом объектах.
Для массовой загрузки этих файлов с использованием sstableloader, запустите sstableloader на исходном узле, укажите один или несколькоузлы в кластере назначения с флагом -d, который может принимать разделенный запятыми список IP-адресов или имен хостов и указывать путь к sstables в исходном узле.__ / a / Cassandra / bin / ./sstableloader -d host_IP path_to_sstables
Example:
/ a / cassandra / bin # sstableloader -d 192.168.58.41 -u popps -pw ******* -tf org.apache.cassandra.thrift.SSLTransportFactory -ts /a/cassandra/ssl/truststore.jks -tspw test123 -ks /a/cassandra/ssl/keystore.jks -kspw test123 -f / a / cassandra / conf / cassandra.yaml / a / cassandra / data / app_properties / admins-58524140431511e8bbb6357f562e11ca /
Сводная статистика:
Подключений на хост:: 1
Всего файловпередано:: 9
Общее количество переданных байтов:: 1787893
Общая продолжительность (мс):: 2936
Средняя скорость передачи (МБ / с):: 0
Пиковая скорость передачи (МБ / с):: 0
- Выполнены эти шаги для всех таблиц.И проверил количество строк в старомd новые таблицы с использованием CQLSH
cqlsh> SELECT count FROM keyspace.table;
пример для одной таблицы:
счетчик для новой таблицы: 341
count для старой таблицы: 303
И мы также можем определить разницу в таблицах с помощью команды 'sdiff'.Выполнены следующие шаги:
Поэтому я прошу кого-нибудь помочь мне узнать причину появления новых данных в новых таблицах.
Пожалуйста, дайте мне знать, еслиВам нужна дополнительная информация.
PS: После первого переноса данных и обнаружения этих проблем мы TRUNCATED все таблицы и таблицы DROPPED с пользовательским типом и воссоздали удаленные таблицы.И сделал ту же процедуру для переноса данных снова.Тем не менее мы видим те же проблемы.