Шардирование¶
Начиная с версии StaffCop Enterprise 4.7, шардирование поддерживается из коробки.
Принцип работы¶
Шардирование — принцип проектирования базы данных, при котором логически независимые строки таблицы базы данных хранятся раздельно, заранее сгруппированные в секции. Эти секции, в свою очередь, размещаются на разных, физически и логически независимых серверах базы данных. При этом один физический узел кластера может содержать несколько серверов баз данных.
В Staffcop шардирование работает следующим образом:
Создаётся несколько таблиц, разбитых по месяцам с 1 числа, таблица на следующий месяц и дефолтная таблица (agent_event_default).
Таблица текущего месяца заполняется по мере поступления событий.
Примечание
agent_event_default — таблица в которую попадают события, не попавшие ни в одну из созданных таблиц. Например, если на агенте выставлено неверное время (месяц, год).
Если agent_event_default увеличилась до большого размера, значит где-то возникла проблема или что-то работает некорректно.
Полезные команды¶
Список команд, с помощью которых можно произвести диагностику или посмотреть информацию.
Действие  | 
Команда  | 
Комментарий  | 
Проверить, включено ли   | 
sudo staffcop shard install
 | 
Если шардирование включено, на экране появится сообщение   | 
Вывести список шардов  | 
sudo staffcop shard list
 | 
Выводит список всех таблиц, разбитых по месяцам;    | 
Посмотреть, какие данные   | 
echo "select count(*), min(local_time), max(local_time) from agent_event_2024_08_01 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_name>
 | 
Удаляет таблицу table и привязанные к ней файлы.  | 
Удалить данные за         | 
staffcop shard cleanup n
 | 
Удаляет все таблицы, кроме n:       0 — удаляет все таблицы;            | 
Удалить партицию в ClickHouse  | 
staffcop clickhouse drop <partition>
 | 
Удаляет партицию   | 
Удаление шарда через веб-интерфейс¶
Примечание
При удалении шарда, будут удалены все файлы, привязанные к указанной таблице.
Удалить шарды в PostgreSQL и ClickHouse можно из веб-интерфейса сервера Staffcop. Для этого в разделе Панель управления — Базы данных выберите интересующую вас базу и в выпадающем меню Выполнить действие выберите Удалить данные.