2013-09-13 2 views
8

У меня есть пространство ключей, заполненное данными, которые были дороги для генерации. Я хочу две копии этих данных в моем кластере. Я бы хотел, чтобы в итоге получилось два ключа: давайте назовите их mydata и mydatabackup, оба из которых содержат одинаковые данные (я не против, если временные метки Cassandra отличаются).Как скопировать пространство ключей в кластере

Есть ли простой способ сделать это? Ближайшая вещь, которую я могу найти для ответа, - использовать sstable2json и json2sstable as suggested in response to a similar question? Есть ли способ лучше?

ответ

6

«Есть ли лучший способ?»

данные Все Cassandra сохраняются в данных/папке (проверьте значение конфигурации data_file_directories в cassandra.yaml). Вы также можете проверить save_caches_directory и commitlog_directory config.

Внутри папки данных, вы будете иметь

  1. Один папку за
  2. пространство ключей
  3. Одна папка для системы
  4. ключевого пространства
  5. Некоторые папки для проверки подлинности и т.д. ..

    Внутри каждой папки пространство ключей , у вас будет

  6. * -Data.db файлы, которые содержат ваши реальные данные

  7. * -Filter.db файлы
  8. * файлы -Index.db для индекса
  9. ...

реплицировать данные, вы делаете обычную копию этих папок.

В нашей команде ops используют crontab для планирования регулярного резервного копирования данных Cassandra таким образом.

Примечание: иногда вы можете пропустить данные в реальном времени, которые все еще находятся в памяти или в памяти, но еще не сброшены на диск. Вы можете вызвать полное сжатие перед резервным копированием файлов данных. Но полное уплотнение может повредить вам парфюм, поэтому будьте осторожны


Лучше ответ: использовать предоставленный инструмент, чтобы сделать снимок из вас DB:

http://www.datastax.com/docs/1.0/operations/backup_restore

+3

Вместо того, чтобы делать полное уплотнение, вы можете просто запустите 'nodetool flush', чтобы ваши memtables были сброшены на диск. – Richard

+0

@ Рихард Действительно. Документ дает лучшую альтернативу: nodetool -h -p snapshot doanduyhai

+1

Я сделал обычную копию моментального снимка и вставил файлы в новую папку ('mydata') в каталоге данных casssandra. Однако данные из cassandra-cli недоступны. Кажется, это связано с тем, что файлы называются в соответствии со старым ключом - что-то вроде 'mydata-cf-hf-1-Data.db'. Однако, если я переименую файлы в соответствии с новым пространством ключей (например, 'mydatabackup-cf-hf-1-Data.db') и запустил' nodetool repair mydatabackup'. Кажется, это работает.Спасибо @doanduyhai – lorcan

Смежные вопросы