Перенос данных в ClickHouse
В некоторых случаях возможно возникновение такой ситуации, что в БД ClickHouse, откуда берутся данные для работы Статистики v2, по тем или иным причинам отсутствуют данные за какие-либо промежутки времени. Для исправления этой проблемы, начиная с версии Webim 10.6, доступна возможность вручную запустить перенос статистических данных из БД (схемы в случае PostgreSQL) pro
в БД ClickHouse с помощью скрипта populate_clickhouse.sh
.
Порядок действий для переноса данных
-
Определитесь с временным промежутком, за который вам необходимо перенести данные. Для этого ниже предоставлены некоторые рекомендации:
Внимание!
На границах временных промежутков могут проявляться "артефакты" переноса, так что мы рекомендуем закладывать дополнительные сутки по обоим краям промежутка.
-
В случае, если у Вас имеется один большой пробел с отсутствующими данными, временной промежуток стоит ограничить только им.
-
В случае, если у Вас имеется несколько больших пробелов в данных, разделённых малыми промежутками (например, 2-3 дня), в которых данные присутствуют, включите во временной промежуток весь период от начала первого пробела до конца последнего.
-
В случае, если у Вас имеется несколько больших пробелов в данных, разделённых средними по размеру промежутками (не более недели в масштабах месяца), в которых данные присутствуют, вы можете как задать в качестве временного промежутка весь период от начала первого пробела до конца последнего, так и обрабатывать каждый пробел как отдельный временной промежуток.
-
В случае, если у Вас имеется несколько больших пробелов в данных, разделённых большими промежутками, в которых данные присутствуют, мы рекомендуем обрабатывать каждый пробел как отдельный временной промежуток.
-
В случае небольшого промежутка (меньше суток) битых данных Вы можете определить промежуток как с учётом данной выше рекомендации о дополнительных сутках по краям промежутков, так и без него
-
-
Перейдите в виртуальное окружение Chat Backend
-
Запустите скрипт
populate_clickhouse.sh
.Синтаксис:
populate_clickhouse.sh [-v] -a=account_name -df=dd-mm-yyyy -dt=dd-mm-yyyy
Значения параметров приведены ниже:
-
-v
|--verbose
- вывод дополнительной информации о процессе переноса данных в терминал -
-a
|--account
- имя аккаунта в Webim, обязательно -
-df
|--dtmfrom
- начало периода, за который переносятся данные, обязательно -
-dt
|--dtmto
- конец периода, за который переносятся данные, обязательно
N.B.
Получившийся временной период не будет включать в себя день, указанный в параметре
-dt
, т.е. концом периода, за который будут перенесены данные, будет считаться23:59:59
предыдущего дня. -
Также стоит отметить, что длительность выполнения переноса данных зависит от количества данных в БД pro
за указанный во временном промежутке период и текущей нагрузке на неё. В случае особо больших промежутков и/или особо большого количества данных в БД pro
в указанном промежутке, а также сильной нагрузки на неё в момент переноса, перенос данных может затянуться на многие часы, так что к выбору временного промежутка необходимо подходить с умом.