Cassandra: отправка диска на новый DC для синхронизации 50 ТБ данных - PullRequest
3 голосов
/ 16 октября 2019

Мы добавляем новый центр обработки данных в наш кластер Cassandra. В настоящее время у нас есть DC с 15 узлами с RF = 3, что дает около 50 ТБ ~ данных.

Мы добавляем еще один центр обработки данных в другой стране, и мы хотим, чтобы оба центра обработки данных содержали все данные. Очевидно, что синхронизация 50 ТБ данных через Интернет займет колоссальное количество времени.

Можно ли скопировать полный назад на несколько дисков, отправить его на новый DC, а затем восстановить? Мне просто интересно, какова будет процедура для этого.

Может ли кто-нибудь дать мне несколько советов по этой операции, если вообще возможно? Или какие-то другие советы?

Наш новый DC пока будет меньше (6 узлов), хотя будет достаточно места. Новый DC в основном предназначен для резервного копирования / восстановления после отказа и, вообще говоря, не будет основным кластером для записи.

1 Ответ

4 голосов
/ 16 октября 2019

TL; DR;Из-за изменения топологии (количества узлов) между двумя контроллерами домена, избежать потоковой передачи данных в AFAIK невозможно.

В настоящее время наш новый DC будет меньше (6 узлов)

Типичный процесс не будет работать из-за выравнивания токенов на узлахбыть другим (кольцо нового кластера изменится). Поэтому простое копирование существующих SSTable не будет работать, так как узлы, содержащие эти таблицы, могут не иметь токенов, соответствующих данным в файлах, и поэтому C * не сможет найти эти данные.

Массовая загрузкаданные на новый DC тоже отсутствуют, так как вы будете перезаписывать старые данные, если вставите их заново.

Чтобы дать вам общее представление о процессе, если вы хотите сохранить топологию:

  1. снимок данных с исходного DC
  2. Настройте новый DC. Чрезвычайно важно, чтобы вы установили initial_token для каждой машины. Вы можете получить список необходимых токенов, запустив nodetool ring в исходном кластере. Вот почему вам нужно одинаковое количество узлов. Также важно, чтобы при копировании файлов SSTable файлы и токены были с одного и того же узла.
  3. отправляйте данные на новый DC (помните, что новый узел 10.0.0.1 получил свои токены от192.168.0.100 в старом dc, то он также должен получить свои снимки с 192.168.0.100).
  4. Запустите новый DC и убедитесь, что оба DC видят друг друга хорошо.
  5. Перестройка и восстановление system_distributed и system_auth (при условии, что у вас включена аутентификация)
  6. Обновление согласованности клиентак тому, что вам нужно. (Вы хотите написать в оба DC? Из вашего описания звучит как нет, так что вы можете быть все хорошо).
  7. Обновите схему, убедитесь, что вы используете NetworkTopologyStrategy для всех ключей, которыми вы хотите поделиться, затем добавьте репликацию для нового DC.
    ALTER KEYSPACE ks WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'oldDC' : 3, 'newDC':3 };
Выполните полное восстановление на каждом узле в новом DC.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...