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

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

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

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

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

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

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

../_images/shard_1.png

Примечание

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

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

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

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

Действие

Команда

Комментарий

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

sudo ibatyr shard install

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

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

sudo ibatyr shard list

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

Посмотреть данные таблицы

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

Результатом вывода будет количество событий в выбранной таблице, а также время первого и последнего события, где table — имя таблицы: agent_event — все шарды; agent_event_YYYY_MM_01 — месячный шард.

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

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

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

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

ibatyr shard freeze <table_name>

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

Внимание: Перед началом «заморозки» остановите 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.

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

Примечание

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

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

../_images/shard_cleanup_web.png