Перенос данных Riak при изменении размера кольца
Это тривиально? Я буду использовать Bitcask и резервные копии файлов (файлов на каждом узле).
Допустим, мой начальный размер кольца составляет 256 с 16 узлами. Теперь, если мне нужно перейти к кольцу 1024, могу ли я установить 16 новых экземпляров, настроенных с размером кольца 1024, скопировать файлы резервных копий для старого кластера в эти 16 новых экземпляров и запустить Riak? Сможет ли Риак забрать эти старые данные?
Я думаю, нет, так как идентификаторы разделов и их сопоставление с отдельными узлами также могут измениться после изменения размера кольца. Но какой другой путь есть? Будет ли работать riak-backup в этом случае (при изменении размера кольца)?
Я просто хочу знать, что мой выбор достаточно перспективен. Очевидно, что в какой-то момент, когда требования резко изменятся или всплывет пользовательская база, возможно, потребуется изменить всю архитектуру. Но я надеюсь, что в какой-то момент я смогу внести подобные изменения (в размер кольца) - естественно, с НЕКОТОРЫМИ усилиями, но - без этого невозможно.
2 ответа
Миграция кластеров с другим размером кольца трудно сделать с помощью резервного копирования файлов на основе узлов (то есть, если вы просто создаете резервные копии каталогов /data на каждом узле, как это рекомендуется в разделе "Резервное копирование Riak"). Потому что, как вы и подозревали, файлы данных бэкэнда зависят от сопоставления узлов и разделов с заданным размером кольца.
Что вы должны сделать вместо этого?
Вы должны использовать "логические" резервные копии всего кластера, используя один из этих двух инструментов:
- резервное копирование и восстановление riak-admin (которое фактически работает с кластерами разных размеров кольца), или
- 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/