База временных рядов не запускается после обновления
Смена основной версии базы временных рядов меняет и расположение данных, и пользователя службы. Старый каталог остаётся с прежним владельцем, и новая служба его не открывает. Порядок действий важен: неудачная попытка миграции может испортить данные.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Каталог данных принадлежит прежнему пользователю
Пакет создал нового пользователя, а каталог остался за старым. Открыть его служба не может.
-
Расположение данных изменилось между версиями
Новая версия ищет данные по новому пути и не находит. Служба стартует с пустой базой либо отказывает.
-
Формат данных не читается новой версией
Между основными версиями формат меняется. Служба сообщает о несовместимости и завершается.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Сообщение службы при попытке запуска.
journalctl -u influxdb -n 30 --no-pagerКаталоги данных и их владельцы.
sudo ls -ld /var/lib/influxdb*Пользователь и каталог состояния службы.
systemctl show influxdb -p User -p StateDirectoryРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Пакет создал нового пользователя, а каталог остался за старым. Открыть его служба не может.
- Как проверить
-
Посмотрите владельца каталога и пользователя службы.
sudo ls -ld /var/lib/influxdb* 2>/dev/null systemctl show influxdb -p User -p StateDirectory 2>/dev/null
- Как исправить
- Снимите копию каталога данных, затем передайте его пользователю службы. Копия до изменения прав — обязательный шаг: откат иначе невозможен.
- Почему происходит
- Новая версия ищет данные по новому пути и не находит. Служба стартует с пустой базой либо отказывает.
- Как проверить
-
Посмотрите оба пути и что в них есть.
sudo ls -l /var/lib/influxdb /var/lib/influxdb2 2>/dev/null | head systemctl cat influxdb 2>/dev/null | grep -iE "ExecStart|Environment"
- Как исправить
- Выполните штатную миграцию данных из старого расположения в новое. Копирование файлов между основными версиями обычно не работает.
- Почему происходит
- Между основными версиями формат меняется. Служба сообщает о несовместимости и завершается.
- Как проверить
-
Посмотрите сообщение при запуске.
journalctl -u influxdb -n 30 --no-pager | grep -iE "migrat|version|upgrade"
- Как исправить
- Разворачивайте новую версию рядом и переносите данные штатным средством. Обновление «поверх» без миграции — самый частый способ потерять исторические ряды.
Пример вывода
Каталог данных остался за прежним пользователем. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
influxd[6800]: Error opening boltdb: open /var/lib/influxdb/influxd.bolt: permission denied
systemd[1]: influxdb.service: Main process exited, code=exited, status=1/FAILURE
$ sudo ls -ld /var/lib/influxdb
drwxr-xr-x 4 influxdb-old influxdb-old 4096 Sep 15 10:02 /var/lib/influxdb
Связанные ошибки
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- status=238/STATE_DIRECTORY в systemd Код 238/STATE_DIRECTORY: не удалось подготовить постоянный каталог службы в /var/lib из StateDirectory=.
- PostgreSQL: data directory has invalid permissions Кластер PostgreSQL не запускается из-за прав на каталог данных. Требование 0700 или 0750 и как вернуть владельца.
- База не запускается после переноса каталога данных Перенос данных на другой раздел не работает: профиль защиты и настройки службы указывают на прежний путь.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Configuration file is marked executable Предупреждение о правах: unit-файл помечен исполняемым. Откуда берётся и почему это стоит исправить.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
Где встречается чаще всего
Источники
- Документация InfluxDB: обновление версий
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено сменой владельца каталога данных перед запуском.