2016-08-02 1 views
0

Я знаю, что есть несколько подобных вопросов, но я все еще смущен этим. Поскольку существует потребность в этом механизме (копирование данных из одного кластера в другой), я ищу небольшое разъяснение.Cassandra - копирование sstable снимка из одного кластера в другой

Давайте предположим очень простой сценарий. Я хочу скопировать таблицу из одного кластера cassandra (C1) в другую (C2). Стол, который я копирую, называется «item».

Предположим, что количество узлов каждого кластера одинаковое (исходный и целевой узлы в кластере равны 4 каждому). Не уверен, что дело или нет.

Я пытаюсь использовать моментальные снимки и sstableloader, чтобы сделать трюк. Я смог создать моментальный снимок, скопировать файлы моментальных снимков из C1: N1 (кластер 1 узел 1 .../myspace/item-xxxxxx/snapshot/######) в целевой каталог таблицы C2: N1 (кластер 2 node 1: .../myspace/item-xxxxxx). Я использовал sstableloader для загрузки данных и управления nodetool. Отлично. Единственная проблема заключается в том, что, поскольку загруженный снимок был только из одного из исходных узлов, я только «восстановил» часть данных (около 485 строк 1k). Поэтому я думаю, что снова скопирую снимок с C1: N2 на C2: N1 и загрузите его. Проблема в том, что все файлы таблиц уже существуют на C2: N1. Если я скопирую файлы моментальных снимков из каталога C1: N2 в таблицу C2: N1, я удалю файлы, которые уже есть. Я не проверял все 4 целевых узла, но я проверил узел 2 цели, и каталог таблицы элементов уже существовал там также с файлами данных. Я предполагаю, что все узлы на целевом компьютере имеют файлы данных, поэтому я застрял в том, как sstable загрузить другие 3 снимка моментальных снимков источника.

Короче говоря (если это возможно): Как я могу загрузить несколько исходных файлов моментального снимка (по одному от каждого хоста в исходном кластере) в целевой кластер? И чтобы усложнить дело, будет ли иметь значение, если исходный и целевой кластеры имеют разное количество узлов (я бы подумал, что с меньшим количеством узлов на цели потенциально будет большая проблема).

Что действительно нужно здесь, на мой взгляд, является способом запуска ssableloader в кластере SOURCE и передачи потока данных в целевой кластер. Я бы подумал, что жизнь станет намного проще.

Заранее спасибо.

-Джим

ответ

1

Есть two options for bulk loading, кажется, вы можете иметь их пол объединены вместе. Вы в основном ссылаетесь на механизм «скопируйте sstables», который является довольно ручным и может не стоить проблем, если производительность восстановления не является приоритетом. Использование sstable loader отличается, хотя и не требует этого.

sstableloader инструмент подключится к узлу, найдет все узлы в этом узле кластера и использует соединение для сборки метаданных/обнаружения. Он будет разделять/транслировать sstables, которые вы выбираете для целевого кластера, в соответствующих диапазонах токенов (вам не понадобится ремонт). Вы можете запустить sstableloader из узлов исходных кластеров и указать его на целевой кластер, вам не нужно копировать sstables поверх вас (хотя, если они находятся в разных DC, это может быть немного быстрее).

Если у вас есть OpsCenter автоматизация этих шагов может быть сделано для вас с графическим интерфейсом https://docs.datastax.com/en/opscenter/5.2/opsc/online_help/services/opscBackupCloneCluster.html

+0

Так sstableloader работает с «-d IP». Когда я это сделал, это целевой IP, и я запускаю его с одного из целевых узлов (и я использую моментальный снимок для загрузки данных). Может быть, именно здесь я ошибаюсь. Вы сказали, что я могу запустить его из исходного кластера. Я помещаю «-d SourceIP»? Если да, где я должен указать IP-адрес целевого кластера для подключения? –

+0

'-d' будет для любого из узлов целевого кластера.инструмент можно запустить из любого места –

+0

Спасибо за ответ. Извините за недостаток знаний об этом, но как вы указываете исходный кластер для подключения к нему? Просто запустив его в исходном кластере? При этом вы не можете запустить sstableloader в целевом кластере, а затем вправо (потому что нигде мы не указываем исходный IP-адрес)? –