Шардирование

В StaffCop Enterprise начиная с версии 4.7 шардирование поддерживается из коробки.

Принцип работы

Шардирование — это принцип проектирования базы данных, при котором логически независимые строки таблицы базы данных хранятся раздельно, заранее сгруппированные в секции, которые, в свою очередь, размещаются на разных, физически и логически независимых серверах базы данных, при этом один физический узел кластера может содержать несколько серверов баз данных.

Работает шардирование в Staffcop следующим образом. Создается несколько таблиц разбитых по месяцам с 1 числа, один месяц вперед и дефолт таблица (agent_event_default). По мере поступления событий начинает заполняться таблица текущего месяца.

../_images/shard_1.png

Примечание

agent_event_default - это таблица в которую попадают события не попавшие ни в одну из созданных таблиц. Пример, на агенте выставлено неверное время (месяц, год). Если данная таблица увеличилась до огромных размеров, то это значит, что где-то возникла проблема или что-то не работает коректно.

Полезные команды

Список команд, с помощью которых можно произвести диагностику или посмотреть информацию.

  • Проверить и включить включено-ли у вас шардирование:

sudo staffcop shard install

Если шардирование уже включено, то будет выдана ошибка «Sharding already enabled»

  • Вывод списка шардов

sudo staffcop shard list

Выводит список всех таблиц, разбитых по месяцам.

../_images/shard_2.png
  • Запрос позволяет посмотреть, какие данные хранятся в таблице (например agent_event_default).

echo "select count(*), min(local_time), max(local_time) from agent_event_default group by date_trunc('month', local_time)" | staffcop sql
  • Создание «холодного» хранилища - например, на другом диске, для создания архива.

sudo staffcop shard cold /var/lib/staffcop/upload/coldbase
  • «Заморозка» определенного месяца.

Внимание

Перед началом «Заморозки» следует отключить nginx следующей командой: sudo service nginx stop.

staffcop shard freeze agent_event_2018_03_01

Команда «заморозит» март 2018 года, перенеся его на медленный диск. По завершению переноса необходимо запустить nginx: sudo service nginx start.

  • Удаление данных за ненужные месяца

staffcop shard drop agent_event_2018_02_01

Команда удалит данные за февраль 2018 года.

Совет

Если вы не можете решить проблему, тогда следует обратиться в техподдержку.