БОЛЬШОЙ вопрос!
1) В чем различия между этими командами?
Запуск nodetool snapshot
создает жесткую ссылкук файлам SSTable в запрашиваемом пространстве ключей.Это то же самое, что запускать это из командной строки (Linux):
ln {source} {link}
A cqlsh COPY
по сути то же самое, что и SELECT * FROM
для таблицы.Он создаст текстовый файл с данными таблицы в любом формате, который вы указали.
С точки зрения их отличия от контекста backup , файл, созданный с использованием cqlsh COPY
, будет содержать данныесо всех узлов.Принимая во внимание, что nodetool snapshot
должен быть запущен на каждом узле в кластере.В кластерах, где число узлов больше, чем коэффициент репликации, каждый снимок будет действительным только для того узла, на котором он был взят.
2) Какой из них наиболее подходит?
Это зависит от того, что вы пытаетесь сделать.Если вам просто нужны резервные копии для узла / кластера, тогда nodetool snapshot
- это путь.Если вы пытаетесь экспортировать / импортировать данные в новую таблицу или кластер, тогда лучше использовать COPY
.
Также стоит отметить, что запуск cqlsh COPY
занимает некоторое время (в зависимости от количестваданные в таблице) и могут быть подвержены тайм-аутам, если не настроены должным образом.nodetool snapshot
почти мгновенно;хотя процесс сжатия и SCP-файлов моментальных снимков для экземпляра вне кластера займет некоторое время.
3) Должны ли мы использовать ту же технику сброса данных, если мы используем команду cqlsh
copy?
Нет, это не обязательно.Поскольку cqlsh COPY
работает так же, как SELECT
, он будет следовать обычному пути чтения Кассандры , который будет проверять структуры и в оперативной памяти и на диске.