Перейти к содержанию

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

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

  • Вы пытаетесь перенести базу данных приложения из H2 в другую базу данных, и что-то пошло не так,
  • Вы пытаетесь откатиться на предыдущую версию, а не обновить на новую,
  • Glarus BI регистрирует сообщение об ошибке liquibase, когда вы пытаетесь запустить его,
  • Glarus BI регистрирует другое сообщение об ошибке, в котором упоминается H2, или
  • Вы используете Windows 10 и получаете предупреждение о правах доступа к файлам.

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

Основная причина. Glarus BI хранит информацию о пользователях, запросах и т.д. в собственной базе данных, которая называется «база данных приложения». По умолчанию Glarus BI использует 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 (см. Резервное копирование данных приложения Glarus BI). Не продолжайте, пока не сделаете это на случай, если что-то пойдет не так.

  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 Glarus BI.jar load-from-h2 /path/to/metabase.db # do not include .mv.db
    

Вы пытаетесь понизить версию?

Основная причина: Glarus BI не поддерживает понижение версии (т. е. возврат к ранней версии приложения).

Действия:

  1. Закройте Glarus BI.
  2. Восстановите резервную копию базы данных приложения, которую вы сделали перед попыткой обновления или понижения версии.
  3. Восстановите файл JAR или контейнер более старой версии, к которой вы хотите вернуться.
  4. Перезапустите Glarus BI.

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

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

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

Действия:

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

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

mv metabase.db.mv.db metabase-old.db.mv.db

touch metabase.db.mv.db

java -cp target/uberjar/Glarus BI.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.

Действия:

  1. Щёлкните правой кнопкой мыши файл JAR Glarus BI (не файл базы данных приложения).
  2. Выберите «Свойства».
  3. Выберите «Разблокировать».

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

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

Действия:

  1. Используйте базу данных предназначенную для промышленной эксплуатации, такую как PostgreSQL,.
  2. Перейдите в Панель администратора и увеличьте время ожидания для базы данных приложения.
  3. Переместите Glarus BI на более быстрый сервер (в частности, на сервер с более быстрыми дисками).

Дополнительная информация