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