Перенос данных Riak при изменении размера кольца

Это тривиально? Я буду использовать Bitcask и резервные копии файлов (файлов на каждом узле).

Допустим, мой начальный размер кольца составляет 256 с 16 узлами. Теперь, если мне нужно перейти к кольцу 1024, могу ли я установить 16 новых экземпляров, настроенных с размером кольца 1024, скопировать файлы резервных копий для старого кластера в эти 16 новых экземпляров и запустить Riak? Сможет ли Риак забрать эти старые данные?

Я думаю, нет, так как идентификаторы разделов и их сопоставление с отдельными узлами также могут измениться после изменения размера кольца. Но какой другой путь есть? Будет ли работать riak-backup в этом случае (при изменении размера кольца)?


Я просто хочу знать, что мой выбор достаточно перспективен. Очевидно, что в какой-то момент, когда требования резко изменятся или всплывет пользовательская база, возможно, потребуется изменить всю архитектуру. Но я надеюсь, что в какой-то момент я смогу внести подобные изменения (в размер кольца) - естественно, с НЕКОТОРЫМИ усилиями, но - без этого невозможно.

2 ответа

Решение

Миграция кластеров с другим размером кольца трудно сделать с помощью резервного копирования файлов на основе узлов (то есть, если вы просто создаете резервные копии каталогов /data на каждом узле, как это рекомендуется в разделе "Резервное копирование Riak"). Потому что, как вы и подозревали, файлы данных бэкэнда зависят от сопоставления узлов и разделов с заданным размером кольца.

Что вы должны сделать вместо этого?

Вы должны использовать "логические" резервные копии всего кластера, используя один из этих двух инструментов:

  1. резервное копирование и восстановление riak-admin (которое фактически работает с кластерами разных размеров кольца), или
  2. Riak Data Migrator

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

На что нужно обратить внимание:

  • Делайте только резервные копии неживых кластеров. Это означает, что необходимо либо отключить кластер, либо, по крайней мере, убедиться, что во время резервного копирования новых записей в старый кластер не происходит. В противном случае, если вы начнете резервное копирование, но новые записи все еще поступают, нет гарантии, что они попадут в резервный набор данных.

  • Перед выполнением резервного копирования / восстановления обязательно перенесите параметры app.config и пользовательского сегмента в новый кластер.

Надеюсь, это поможет. Таким образом, это не тривиально (то есть, это займет некоторое время и потребует много места на диске, но это так, когда вы переносите большие объемы данных), но это не слишком сложно.

Я знаю, что это старый вопрос, но с Riak 2.x теперь можно динамически изменять размер кольца, не выключая кластер:

riak-admin cluster resize-ring <new_size>

riak-admin cluster plan

riak-admin cluster commit

Примечание. Размер кольца Риака всегда должен быть целым числом 2n, например, 16, 32, 64 и т. Д.

http://docs.basho.com/riak/latest/ops/advanced/ring-resizing/

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