В чем разница между резервным копированием данных с помощью команды nodetool и cqlsh copy?

В настоящее время у нас есть два варианта восстановления данных из таблиц в пространстве ключей Cassandra. Мы можем либо пользователь nodetool команды или использовать copy команда от cqlsh Терминал.

1) В чем различия между этими командами?

2) Какой из них наиболее подходит?

3) Также, если мы используем nodetool чтобы сделать резервную копию, мы обычно сбрасываем данные из таблиц mem в sstables перед тем, как выпустить nodetool snapshot command, Поэтому мой вопрос заключается в том, следует ли нам использовать ту же технологию очистки данных, если мы используем cqlsh copy команда?

Любая помощь приветствуется.

Спасибо большое.

2 ответа

Решение

БОЛЬШОЙ вопрос!

1) В чем различия между этими командами?

Запуск nodetool snapshot создает жесткую ссылку на файлы SSTable в запрашиваемом пространстве ключей. Это то же самое, что запустить это из командной строки (Linux):

ln {source} {link}

cqlsh COPY по сути то же самое, что делать SELECT * FROM на столе. Он создаст текстовый файл с данными таблицы в любом формате, который вы указали.

С точки зрения их отличия от контекста резервного копирования, файл, созданный с использованием cqlsh COPY будет содержать данные со всех узлов. В то время как nodetool snapshot должен быть запущен на каждом узле в кластере. В кластерах, где число узлов больше, чем коэффициент репликации, каждый снимок будет действительным только для узла, на котором он был сделан.

2) Какой из них наиболее подходит?

Это зависит от того, что вы пытаетесь сделать. Если вам просто нужны резервные копии для узла / кластера, то nodetool snapshot это путь Если вы пытаетесь экспортировать / импортировать данные в новую таблицу или кластер, то COPY это лучший подход.

Также стоит отметить, cqlsh COPY Запускается некоторое время (в зависимости от объема данных в таблице) и может быть подвержено тайм-аутам, если не настроен должным образом. nodetool snapshot почти мгновенно; хотя процесс сжатия и создания снимков SCP для экземпляра вне кластера займет некоторое время.

3) Должны ли мы использовать ту же технику сброса данных, если мы используем cqlsh скопировать команду?

Нет, это не обязательно. Как cqlsh COPY работает так же, как SELECT, он будет следовать обычному пути чтения Cassandra, который будет проверять структуры как в оперативной памяти, так и на диске.

Моментальный снимок nodetool подходит для любого объема данных и создает жесткую ссылку в течение секунды. Команда копирования займет много времени, поскольку зависит от размера данных и кластера. для меньшего количества данных и тестирования вы можете использовать команду copy, но для производственного снимка nodetool рекомендуется.

Другие вопросы по тегам