Cassandra: Восстановление данных

В силу того, что Cassandra, распределенная система с большим числом узлов. Время от времени в узлах кластера могут возникать расхождения в данных, полученнные из-за разных причин (используется режим записи "кворум" (quorum) или  один из узлов становится недоступной и др.). Процесс восстановление данных (ремонт данных) служит для решения подобных проблем и является неотъемлемой частью регулярного процесса технического обслуживания кластера Cassandra.

 В Cassandra поддерживаются следующие виды процессов восстановления:

Журнал хинтов.  В случае, когда один из узлов становится недоступным для записи, узел координатор преобразует данные, которые должны быть переданы недоступному узлу в журнал хинтов. Как только узел становится доступным он получает журналы хинтов и проигрывает их, тем самым приводя данные к ожидаемому состоянию. Ограничение на максимальное время записи в журнал хинтов задается при помощи переменной max_hint_window_in_ms, значение которой по умолчанию равно 3 часам.

Ремонт при чтении. В процессе запроса данных узел координатор запрашивает данные с нескольких узлов и анализирует полученные данные. Если координатор определяет, что данные на одном из узлов устарели, то он отправляет актуальное состояние данных узлу с устаревшими данными. Для использования этого режима таблица должна быть создана с опцией read_repair_chance.

Ручное восстановление. Ручной восстановление подразумевает использование команды nodetool repair, которая используется для ремонта восстанавливаемых узлов кластера.  Также эта команда является обязательной в процессе регулярного технического обслуживания кластера Cassandra. Процесс основан на построении дерева, в узлах которого хранятся хеши индивидуальных значений, а в листьях  значения ключей записей. Процесс построения этого дерева достаточно ресурсоемкий в плане диска и памяти.

После того как оно построено, его передают синхронизируемой ноде. После чего данные анализируются и наиболее свежие данные записываются на диск. В ряде случаев может быть более эффективна полная синхронизация вместо описанной выше инкрементальной (например, в процессе добавления новой ноды).  Существует еще одна альтернатива команды nodetool repair - восстановление данных только за указанный период. За большей информацией можно обратиться к официальной документации.

Тэги: cassandra nosql базы данных


 


 
архив

подписка