Шардирование¶
Начиная с версии StaffCop Enterprise 4.7, шардирование поддерживается из коробки.
Принцип работы¶
Шардирование — принцип проектирования базы данных, при котором логически независимые строки таблицы базы данных хранятся раздельно, заранее сгруппированные в секции. Эти секции, в свою очередь, размещаются на разных, физически и логически независимых серверах базы данных. При этом один физический узел кластера может содержать несколько серверов баз данных.
В Staffcop шардирование работает следующим образом:
Создаётся несколько таблиц, разбитых по месяцам с 1 числа, таблица на следующий месяц и дефолтная таблица (agent_event_default).
Таблица текущего месяца заполняется по мере поступления событий.
![../_images/shard_1.png](../_images/shard_1.png)
Примечание
agent_event_default - таблица в которую попадают события, не попавшие ни в одну из созданных таблиц. Например, если на агенте выставлено неверное время (месяц, год).
Если agent_event_default увеличилась до большого размера, значит где-то возникла проблема или что-то работает некорректно.
Полезные команды¶
Список команд, с помощью которых можно произвести диагностику или посмотреть информацию.
Действие |
Команда |
Комментарий |
Проверить, включено ли |
sudo staffcop shard install
|
Если шардирование включено, на экране |
Вывести список шардов |
sudo staffcop shard list
|
Выводит список всех таблиц, разбитых |
Посмотреть, какие данные |
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 - удаляет все таблицы; |
Удалить партицию в Clickhouse |
clickhouse drop <partition>
|
Удаляет партицию <partition> в Clickhouse. |
Удаление шарда через веб-интерфейс¶
Примечание
При удалении шарда, будут удалены все файлы, привязанные к указанной таблице.
Удалить шарды в PostgreSQL и Clickhouse можно из веб-интерфейса сервера Staffcop. Для этого в разделе Панель управления - Базы данных выберите интересующую вас базу и в выпадающем меню Выполнить действие выберите Удалить данные.
![../_images/shard_cleanup_web.png](../_images/shard_cleanup_web.png)