Какое лучшее решение для резервного копирования данных в Cassandra?
Доступно несколько различных вариантов, и это действительно зависит от вашей ситуации, которая лучше всего, но вот краткий обзор доступных методов.
По сути, вы пытаетесь защитить себя при резервном копировании хранилища данных от двух вещей:
В Cassandra встроена репликация данных. Параметр конфигурации коэффициента репликации сообщает cassandra, сколько копий каждой записи нужно хранить. Обычно выбирают коэффициент репликации 3, потому что он обеспечивает достойный компромисс между производительностью и долговечностью. Если у вас коэффициент репликации больше единицы, вы можете выдержать потерю хотя бы некоторых узлов. По этому поводу можно еще много сказать, но вы можете прочитать об этом в другом месте.
Однако репликация не защищает вас от неверных изменений данных через API, поскольку массовые удаления будут реплицироваться так же, как и хорошие вставки. Чтобы помочь вам в этом, cassandra предлагает функцию создания снимков. По сути, он жестко связывает файлы данных с папкой моментальных снимков в каталоге данных. Это может быть довольно недорогой подход в зависимости от того, насколько часто и случайным образом изменяются ваши данные. Один из возможных подходов - хранить несколько снимков на дисках машин cassandra, если у вас достаточно места.
Если у вас есть свободная емкость ввода-вывода, вы можете перенести эти резервные копии на отдельные машины. По моему опыту, это сильно снижает пропускную способность как диска, так и сети.
Наконец, начиная с Cassandra 0.7, вы можете настроить репликацию для нескольких центров обработки данных. По сути, у вас может быть несколько копий кластера, распределенных по всему миру. Если вы объедините это со снимками, у вас будет довольно много разных вариантов восстановления данных, когда что-то пойдет не так.
Помните, что вы получаете 1 балл за создание резервной копии и 10 000 баллов за ее восстановление. Подумайте, как вы будете тестировать свои резервные копии, чтобы убедиться, что они действительно могут быть восстановлены, когда придет время.