Использование базы данных приложения H2 или миграция из неё¶
Предупреждение
Смена базы данных приложения (метаданных) может привести к проблемам с доступом к системе даже при выполнении всех инструкций. Перед выполнением подобных действий проконсультируйтесь в службе поддержки.
Вы установили Glarus BI, но:
- при переносе данных приложения из H2 в другую СУБД возникли проблемы;
- наблюдаются проблемы при откате на предыдущую версию, а не при обновлении на новую;
- Glarus BI регистрирует сообщение об ошибке
liquibase
при запуске; - Glarus BI регистрирует другое сообщение об ошибке, в котором упоминается
H2
; - в Windows 10 выдаётся предупреждение о правах доступа к файлам.
Используете ли вы в настоящее время H2 в качестве базы данных вашего приложения?¶
Возможная причина
Glarus BI хранит информацию о пользователях, запросах и т.д. в собственной базе данных, которая называется «база данных приложения». Glarus BI может использовать H2, но разработчики Metabase не рекомендуют её для промышленной эксплуатации из-за чувствительности к ошибкам файловой системы.
Действия:
- Чтобы проверить, что вы используете в качестве базы данных приложения, перейдите в Управление, откройте вкладку Решение проблем, прокрутите вниз до «Диагностическая информация» и в коде настроек найдите ключ
application-database
. - См. Миграция с H2 для получения инструкций о том, как перейти на более надёжную базу данных приложения.
Вы пытаетесь перенести базу данных приложения с H2 на что-то другое?¶
Возможная причина
Вы пытаетесь мигрировать базу данных приложения из H2 в базу данных уровня промышленной эксплуатации, такую как PostgreSQL или MySQL/MariaDB, используя load-from-h2
, но это не удалось, и вы получили ошибку следующего характера:
Command failed with exception: Unsupported database file version or invalid file header in file <YOUR FILENAME>
Действия
-
Создайте копию экспортированной базы данных H2 (см. [Резервное копирование данных приложения Glarus BI][backup]). !!! warning "Предупреждение" Не продолжайте, пока не сделаете резервную копию.
-
Убедитесь, что файл базы данных H2, который вы экспортировали, называется
metabase.db.mv.db
. -
H2 автоматически добавляет расширение
.mv.db
к пути к базе данных, который вы указываете в командной строке, поэтому убедитесь, что путь к файлу базы данных, который вы передаете команде, не включает расширение.mv.db
. Например, если вы экспортировали базу данных приложения и хотите загрузить данные из этой базы данных H2 в базу данных PostgreSQL с помощьюload-from-h2
, ваша команда будет выглядеть примерно так:
Вы пытаетесь понизить версию?¶
Возможная причина
Glarus BI не поддерживает понижение версии (т. е. возврат к ранней версии приложения).
Действия
- Закройте Glarus BI.
- Восстановите резервную копию базы данных приложения, которую вы сделали перед попыткой обновления или понижения версии.
- Восстановите файл JAR или контейнер более старой версии, к которой вы хотите вернуться.
- Перезапустите Glarus BI.
База данных приложения заблокирована?¶
Возможная причина
Иногда Glarus BI не запускается из-за того, что блокировка базы данных приложения не была снята должным образом во время предыдущего запуска. Сообщение об ошибке выглядит примерно так:
liquibase.exception.DatabaseException: liquibase.exception.LockException: Could not acquire change log lock.
Действия
-
Откройте bash на сервере, где установлена Glarus BI, и вручную снимите блокировки, выполнив:
-
После завершения этой команды перезапустите экземпляр Glarus BI в обычном режиме (без флага
migrate release-locks
).
База данных приложения повреждена?¶
Возможная причина
H2 менее надёжен, чем системы управления базами данных уровня промышленной эксплуатации, и иногда файл базы данных может повредиться. Это может привести к потере метаданных, но не повредит данные в источниках, к которым подключен Glarus BI.
Действия
Сообщения об ошибках могут различаться в зависимости от того, как была повреждена база данных приложения, но в большинстве случаев в сообщении журнала упоминается h2
. Пример команды и сообщения:
myUser@myIp:~$ java -cp Glarus BI.jar org.h2.tools.RunScript -script whatever.sql -url jdbc:h2:~/metabase.db
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Row not found when trying to delete from index """"".I37: ( /* key:7864 */ X'5256470012572027c82fc5d2bfb855264ab45f8fec4cf48b0620ccad281d2fe4', 165)" [90112-194]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
[etc]
Решение
Не все ошибки H2 подлежат восстановлению (поэтому если вы используете H2, пожалуйста, создайте стратегию резервного копирования для файла базы данных приложения).
Если вы используете последнюю версию и используете H2, база данных приложения хранится в metabase.db.mv.db
. — Откройте командную строку на сервере, на котором работает экземпляр Glarus BI, и попытайтесь восстановить поврежденный файл H2, выполнив следующие четыре команды:
java -cp metabase.jar org.h2.tools.Recover
mv metabase.db.mv.db metabase-old.db.mv.db
touch metabase.db.mv.db
java -cp target/uberjar/metabase.jar org.h2.tools.RunScript -script metabase.db.h2.sql -url jdbc:h2:`pwd`/metabase.db
Вы используете Glarus BI с H2 в Windows 10?¶
Возможная причина
В некоторых случаях в Windows 10 файл JAR Glarus BI должен иметь разрешения на создание локальных файлов для базы данных приложения. При запуске JAR вы увидите сообщение об ошибке, подобное этому:
Exception in thread "main" java.lang.AssertionError: Assert failed: Unable to connect to Glarus BI DB.
Действия
- Щёлкните правой кнопкой мыши файл JAR приложения
metabase.jar
(не файл базы данных приложения). - Выберите «Свойства».
- Выберите «Разблокировать».
Не слишком ли долго загружается база данных приложения?¶
Возможная причина
Вы используете H2 в качестве базы данных приложения, а база данных приложения настолько велика, что её нельзя загрузить менее чем за 5 секунд (это значение таймаута по умолчанию). Вы увидите сообщение «Таймаут» в консоли, когда попытаетесь запустить Glarus BI.
Действия:
- Используйте базу данных уровня промышленной эксплуатации, такую как PostgreSQL,.
- Перейдите в Управление и увеличьте время ожидания для базы данных приложения.
- Переместите Glarus BI на более быстрый сервер (в частности, на сервер с более быстрыми дисками).