Шардирование¶
В StaffCop Enterprise начиная с версии 4.7 шардирование поддерживается из коробки.
Принцип работы¶
Шардирование — это принцип проектирования базы данных, при котором логически независимые строки таблицы базы данных хранятся раздельно, заранее сгруппированные в секции, которые, в свою очередь, размещаются на разных, физически и логически независимых серверах базы данных, при этом один физический узел кластера может содержать несколько серверов баз данных.
Работает шардирование в Staffcop следующим образом. Создаеться несколько таблиц разбитые по месяцам с 1 числа, один месяц вперед и дефолт таблица (agent_event_default). По мере поступления событий начинает заполняться таблица текущего месяца.
Примечание
agent_event_default - это таблица в которую попадают события не попавшие ни в одну из созданных таблиц. Пример, на агенте выставлено неверное время (месяц, год). Если данная таблица увеличилась до огромных размеров, то это значит, что где-то возникла проблема или что-то не работает коректно.
Полезные команды¶
Список команд, с помощью которых можно произвести диагностику или посмотреть информацию.
Вывод списка шардов
sudo staffcop shard list
Выводит список всех таблиц, разбитых по месяцам.
Запрос позволяет посмотреть, какие данные хранятся в таблице (например 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 stop.
Удаление данных за ненужные месяца
staffcop shard drop agent_event_2018_02_01
Команда удалит данные за февраль 2018 года.
Совет
Если вы не можете решить проблему, тогда следует обратиться в техподдержку.