В чем разница между резервным копированием данных с помощью команды 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 рекомендуется.