Шардирование¶
Начиная с версии 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. Для этого в разделе Панель управления — Базы данных выберите интересующую вас базу и в выпадающем меню Выполнить действие выберите Удалить данные.