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

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

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

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

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

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

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

../_images/shard_1.png

Note

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

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

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

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

Действие

Команда

Комментарий

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

sudo ibatyr shard install

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

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

sudo ibatyr shard list

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

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

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

Создать “холодное” хранилище

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

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

“Заморозить” таблицу

ibatyr shard freeze <table_name>

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

Attention

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

sudo service nginx stop

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

sudo service nginx start

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

ibatyr shard drop <table_name>

Удаляет таблицу table и привязанные к ней файлы.

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

ibatyr shard cleanup n

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

0 — удаляет все таблицы;
1 — оставляет только текущий месяц;
2 — оставляет текущий и предыдущий месяцы;
и т. д.
Команда удаляет шарды в PostgreSQL,
партиции в ClickHouse и привязанные к ним файлы.

Удалить партицию в ClickHouse

ibatyr clickhouse drop <partition>

Удаляет партицию <partition> в ClickHouse.

Удаление шарда через веб-интерфейс

Note

При удалении шарда, будут удалены все файлы, привязанные к указанной таблице.

Удалить шарды в PostgreSQL и ClickHouse можно из веб-интерфейса сервера IBatyr. Для этого в разделе Панель управления - Базы данных выберите интересующую вас базу и в выпадающем меню Выполнить действие выберите Удалить данные.

../_images/shard_cleanup_web.png