Использование базы данных приложения H2 или миграция из нее¶
Вы установили GlarusBI, но:
Вы пытаетесь перенести базу данных приложения из H2 в другую базу данных, и что-то пошло не так,
Вы пытаетесь откатиться на предыдущую версию, а не обновить на новую,
GlarusBI регистрирует сообщение об ошибке
liquibase
, когда вы пытаетесь запустить его,GlarusBI регистрирует другое сообщение об ошибке, в котором упоминается
H2
, илиВы используете Windows 10 и получаете предупреждение о правах доступа к файлам.
Используете ли вы в настоящее время H2 в качестве базы данных вашего приложения?¶
Основная причина. GlarusBI хранит информацию о пользователях, вопросах и т. д. в собственной базе данных, которая называется «база данных приложения». По умолчанию GlarusBI использует H2, но мы не рекомендуем его для промышленной эксплуатации, потому что файл этой базы данных расположен на диске и таким образом чувствителен к ошибкам файловой системы.
Действия:
Чтобы проверить, что вы используете в качестве базы данных приложения, перейдите в Панель администратора, откройте вкладку Устранение неполадок, прокрутите вниз до «Информация о диагностике» и найдите ключ «база данных приложения»
См. Миграция с 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 (см. Резервное копирование данных приложения GlarusBI). Не продолжайте, пока не сделаете это на случай, если что-то пойдет не так.
Убедитесь, что файл базы данных H2, который вы экспортировали, называется
metabase.db.mv.db
.H2 автоматически добавляет расширение
.mv.db
к пути к базе данных, который вы указываете в командной строке, поэтому убедитесь, что путь к файлу базы данных, который вы передаете команде, не включает расширение.mv.db
. Например, если вы экспортировали базу данных приложения и хотите загрузить данные из этой базы данных H2 в базу данных PostgreSQL с помощьюload-from-h2
, ваша команда будет выглядеть примерно так:export MB_DB_TYPE=postgres export MB_DB_DBNAME=metabase export MB_DB_PORT=5432 export MB_DB_USER=<username> export MB_DB_PASS=<password> export MB_DB_HOST=localhost java -jar glarusBI.jar load-from-h2 /path/to/metabase.db # do not include .mv.db
Вы пытаетесь понизить версию?¶
Основная причина: GlarusBI не поддерживает понижение версии (т. е. возврат к ранней версии приложения).
Действия:
Закройте GlarusBI.
Восстановите резервную копию базы данных приложения, которую вы сделали перед попыткой обновления или понижения версии.
Восстановите файл JAR или контейнер более старой версии, к которой вы хотите вернуться.
Перезапустите GlarusBI.
База данных приложения заблокирована?¶
Основная причина: Иногда GlarusBI не запускается из-за того, что блокировка базы данных приложения не была снята должным образом во время предыдущего запуска. Сообщение об ошибке выглядит примерно так:
liquibase.exception.DatabaseException: liquibase.exception.LockException: Could not acquire change log lock.
Действия:
Откройте bash на сервере, где установлена GlarusBI, и вручную снимите блокировки, выполнив:
java -jar glarusBI.jar migrate release-locks
После завершения этой команды перезапустите экземпляр GlarusBI в обычном режиме (без флага
migrate release-locks
).
База данных приложения повреждена?¶
Основная причина: H2 менее надежен, чем системы управления базами данных, предназначенные для промышленной эксплуатации, и иногда файл базы данных может повредиться. Это может привести к потере метаданных, но не повредит данные в источниках, к которым подключен GlarusBI.
Действующие действия: Сообщения об ошибках могут различаться в зависимости от того, как была повреждена база данных приложения, но в большинстве случаев в сообщении журнала упоминается h2
. Вот пример типичной команды и сообщения:
myUser@myIp:~$ java -cp glarusBI.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
. - Откройте оболочку на сервере, на котором работает экземпляр GlarusBI, и попытайтесь восстановить поврежденный файл H2, выполнив следующие четыре команды:
java -cp glarusBI.jar org.h2.tools.Recover
mv metabase.db.mv.db metabase-old.db.mv.db
touch metabase.db.mv.db
java -cp target/uberjar/glarusBI.jar org.h2.tools.RunScript -script metabase.db.h2.sql -url jdbc:h2:`pwd`/metabase.db
Вы используете GlarusBI с H2 в Windows 10?¶
Основная причина: В некоторых случаях в Windows 10 файл JAR GlarusBI должен иметь разрешения на создание локальных файлов для базы данных приложения. При запуске JAR вы увидите сообщение об ошибке, подобное этому:
Exception in thread "main" java.lang.AssertionError: Assert failed: Unable to connect to GlarusBI DB.
Действия:
Щелкните правой кнопкой мыши файл JAR GlarusBI (не файл базы данных приложения).
Выберите «Свойства».
Выберите «Разблокировать».
Не слишком ли долго загружается база данных приложения?¶
Основная причина: вы используете H2 в качестве базы данных приложения, а база данных приложения настолько велика, что ее нельзя загрузить менее чем за 5 секунд (это значение тайм-аута по умолчанию). Вы увидите сообщение «Тайм-аут» в консоли, когда попытаетесь запустить GlarusBI.
Действия:
Используйте базу данных предназначенную для промышленной эксплуатации, такую как PostgreSQL,.
Перейдите в Панель администратора и увеличьте время ожидания для базы данных приложения.
Переместите GlarusBI на более быстрый сервер (в частности, на сервер с более быстрыми дисками).