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

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

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

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

В Staffcop шардирование работает следующим образом:

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

  2. Таблица текущего месяца заполняется по мере поступления событий.

../_images/shard_1.png

Примечание

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

Если agent_event_default увеличилась до большого размера, значит где-то возникла проблема или что-то работает некорректно.

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

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

Действие

Команда

Комментарий

Проверить, включено ли
шардирование

sudo staffcop shard install

Если шардирование включено, на экране
появится сообщение
«Sharding already enabled»

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

sudo staffcop shard list

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

Посмотреть, какие данные
хранятся в таблице table

echo "select count(*), min(local_
time), max(local_time) from table
 group by date_trunc('month',
 local_time)" | staffcop sql

Создать «холодное» хранилище

sudo staffcop shard cold
/var/lib/staffcop/upload/coldbase

Создаёт «холодное» хранилище на другом
диске, например для создания архива.

«Заморозить» таблицу

staffcop shard freeze table_name

Команда заморозит таблицу table_name
и перенесёт её на медленный диск.

Внимание

Перед началом «заморозки» остановите nginx:

sudo service nginx stop

После завершения - запустите nginx:

sudo service nginx start

Удалить данные за месяц

staffcop shard drop table

Удаляет таблицу table.

Удалить данные за
несколько месяцев

staffcop shard-cleanup n

Удаляет все таблицы, кроме n:

0 - удаляет все таблицы;
1 - оставляет только текущий месяц;
2 - оставляет текущий и предыдущий месяцы;
и т.д.