Назад | Перейти на главную страницу

Как перенести openfire со встроенного на внешний

Openfire использует встроенную базу данных - Hsqldb, написанную на Java. Openfire имеет своего рода руководство по миграции, но он не совсем полный. Прежде всего, упомянутая там программа hsqldb-transfer:

  1. Программа с графическим интерфейсом ...
  2. Он должен запускаться от имени того же пользователя, что и владелец базы данных hsqldb. Недостаточно доступа для чтения и записи ?!

Если openfire работает на сервере без графики, это означает:

  1. Выключение сервера на первой машине
  2. Копирование Path-To / embedded-db через (автономную) установку openfire на второй машине, которая также имеет графику и ту же настройку openfire, что и первая машина (те же плагины, версия и т. Д.)
  3. Запуск openfire на второй машине
  4. Перезапуск мастера установки для распознавания скопированной базы данных
  5. Отключение openfire на второй машине
  6. «Обновление» пользователя, запускающего openfire на второй машине, до полноценного человека.
  7. Вход в систему как пользователь openfire
  8. ... но поскольку openfire выключен, база данных теперь не на диске ... это означает, что
  9. Запуск hsqldb-transfer для переноса базы данных

не работает.

В руководстве используется URL-адрес jdbc: hsqldb: Path-To / embedded-db / openfire. Проблема в том, что иногда этот файл есть, а иногда нет. В моем случае: он был там в понедельник, когда я провел пробный прогон без отключения openfire на первой машине, его не было сегодня, когда я отключил openfire.

(Следующие шаги в моем успешном пробном прогоне были:

  1. Во время передачи изменяйте типы данных, не поддерживаемые на новом сервере, на лету, поскольку сам hsqldb-transfer не может отображать диалекты sql
  2. Вручную запустите изменения базы данных на внешнем sql-сервере, чтобы получить желаемую версию (легко, поскольку существующая версия находится в табличной версии). Перешел с 3.5.2 на 3.6.4 ...
  3. Выгрузите содержимое этой базы данных и сделайте импорт на третьем сервере super sql, который блестящий и новый
  4. Настройте openfire на четвертой машине, которая не настолько старая, чтобы разваливаться на части, чтобы использовать внешнюю базу данных на трех
  5. Прибыль!

)

Как получить автономную, не обновляемую копию базы данных, чтобы hsqldb-transfer мог ее использовать?

Это своего рода неудачный способ сделать это, но если у вас возникли проблемы с поиском файла в автономном режиме (что я не могу объяснить):

Вы можете сделать резервную копию живого hsqldb, если во время резервного копирования не возникла контрольная точка. Контрольная точка будет происходить каждый раз при заполнении файла журнала. В файле свойств embedded-db есть настройка:

hsqldb.log_size=50

(в мегабайтах - 50 млн)

Пока файл журнала не достигает этого размера во время копирования файла live db, файл будет согласованным. Все, что находится в файле журнала, еще не было записано в базу данных. Если вы можете сделать это в нерабочее время, вы можете получить достаточно хороший файл дампа.

Итак ... вы можете убить любые активные сеансы, скопировать файл, выключить сервер и продолжить работу оттуда.