Использование базы данных приложения H2 или миграция из нее

Вы установили GlarusBI, но:

  • Вы пытаетесь перенести базу данных приложения из H2 в другую базу данных, и что-то пошло не так,

  • Вы пытаетесь откатиться на предыдущую версию, а не обновить на новую,

  • GlarusBI регистрирует сообщение об ошибке liquibase, когда вы пытаетесь запустить его,

  • GlarusBI регистрирует другое сообщение об ошибке, в котором упоминается H2, или

  • Вы используете Windows 10 и получаете предупреждение о правах доступа к файлам.

Используете ли вы в настоящее время H2 в качестве базы данных вашего приложения?

Основная причина. GlarusBI хранит информацию о пользователях, вопросах и т. д. в собственной базе данных, которая называется «база данных приложения». По умолчанию GlarusBI использует H2, но мы не рекомендуем его для промышленной эксплуатации, потому что файл этой базы данных расположен на диске и таким образом чувствителен к ошибкам файловой системы.

Действия:

  1. Чтобы проверить, что вы используете в качестве базы данных приложения, перейдите в Панель администратора, откройте вкладку Устранение неполадок, прокрутите вниз до «Информация о диагностике» и найдите ключ «база данных приложения»

  2. См. Миграция с 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>

Действия:

  1. Создайте копию экспортированной базы данных H2 (см. Резервное копирование данных приложения GlarusBI). Не продолжайте, пока не сделаете это на случай, если что-то пойдет не так.

  2. Убедитесь, что файл базы данных H2, который вы экспортировали, называется metabase.db.mv.db.

  3. 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 не поддерживает понижение версии (т. е. возврат к ранней версии приложения).

Действия:

  1. Закройте GlarusBI.

  2. Восстановите резервную копию базы данных приложения, которую вы сделали перед попыткой обновления или понижения версии.

  3. Восстановите файл JAR или контейнер более старой версии, к которой вы хотите вернуться.

  4. Перезапустите GlarusBI.

База данных приложения заблокирована?

Основная причина: Иногда GlarusBI не запускается из-за того, что блокировка базы данных приложения не была снята должным образом во время предыдущего запуска. Сообщение об ошибке выглядит примерно так:

liquibase.exception.DatabaseException: liquibase.exception.LockException: Could not acquire change log lock.

Действия:

  1. Откройте bash на сервере, где установлена GlarusBI, и вручную снимите блокировки, выполнив:

    java -jar glarusBI.jar migrate release-locks
    
  2. После завершения этой команды перезапустите экземпляр 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.

Действия:

  1. Щелкните правой кнопкой мыши файл JAR GlarusBI (не файл базы данных приложения).

  2. Выберите «Свойства».

  3. Выберите «Разблокировать».

Не слишком ли долго загружается база данных приложения?

Основная причина: вы используете H2 в качестве базы данных приложения, а база данных приложения настолько велика, что ее нельзя загрузить менее чем за 5 секунд (это значение тайм-аута по умолчанию). Вы увидите сообщение «Тайм-аут» в консоли, когда попытаетесь запустить GlarusBI.

Действия:

  1. Используйте базу данных предназначенную для промышленной эксплуатации, такую как PostgreSQL,.

  2. Перейдите в Панель администратора и увеличьте время ожидания для базы данных приложения.

  3. Переместите GlarusBI на более быстрый сервер (в частности, на сервер с более быстрыми дисками).