Como migrar openfire de embedded para external

5

O banco de dados aberto que o openfire usa é o Hsqldb, escrito em Java. O Openfire tem uma espécie de guia de migração , mas não é exatamente completo. Primeiro de tudo o programa mencionado aqui, hsqldb-transfer, é:

  1. Um programa de GUI ...
  2. Isso deve ser executado como o mesmo usuário que o proprietário do banco de dados hsqldb. O acesso de leitura e gravação é insuficiente!

Se o openfire estiver sendo executado em um servidor sem gráficos, isso significa:

  1. Desligando o servidor na máquina 1
  2. Copiando Path-To / embedded-db em uma instalação openfire (offline) na máquina dois, que também possui gráficos e a mesma configuração openfire da máquina um (mesmos plugins, versão etc.)
  3. Iniciando o openfire na máquina dois
  4. Reiniciando o assistente de configuração para que o banco de dados copiado seja reconhecido
  5. Desligando o openfire na máquina dois
  6. "Atualizando" o usuário que executa o openfire na máquina dois para ser um usuário humano de pleno direito
  7. Fazendo login como o usuário do openfire
  8. ... mas como o openfire está desativado, o banco de dados não está no disco ... o que significa que
  9. Executando a transferência do hsqldb para transferir o banco de dados

não funciona.

No guia, o url jdbc: hsqldb: Caminho-Para / embedded-db / openfire é usado. Problema é: às vezes esse arquivo está lá, outras vezes não é. No meu caso: estava lá na segunda-feira, quando fiz um dry-run sem desligar a máquina na máquina um, estava faltando hoje, quando desliguei o fogo aberto.

(Os próximos passos na minha corrida de sucesso foram:

  1. Durante a transferência, altere tipos de dados não suportados no novo servidor em tempo real, já que a própria transferência do hsqldb é incapaz de mapear entre dialetos sql
  2. Execute manualmente as alterações no banco de dados no sql-server externo para obter a versão desejada (fácil, pois a versão existente está na versão da tabela). Eu fui de 3.5.2 para 3.6.4 ...
  3. Despeje o conteúdo desse banco de dados e faça uma importação na máquina do servidor super sql três, que é brilhante e nova
  4. Configure o openfire na máquina quatro, que não é tão antiga que esteja caindo aos pedaços, para usar o banco de dados externo em três
  5. Lucro!

Como é possível obter uma cópia off-line não atualizada do banco de dados, de modo que o hsqldb-transfer possa usá-la?

    
por kaleissin 14.12.2010 / 18:28

1 resposta

1

Essa é uma maneira ruim de fazer isso, mas se você estiver com problemas para encontrar o arquivo quando estiver off-line (o que não posso explicar):

Você pode fazer um backup de um hsqldb ativo, desde que não tenha ocorrido um ponto de verificação durante o backup. Um ponto de verificação ocorrerá sempre que o arquivo de log for preenchido. Há uma configuração no arquivo de propriedades do db incorporado:

hsqldb.log_size=50

(que está em meg-50M)

Contanto que o arquivo de log não atinja esse tamanho durante a cópia do arquivo live db, o arquivo será consistente. Tudo o que está no arquivo de log ainda não foi gravado no banco de dados. Se você puder fazer isso fora do horário de expediente, poderá obter um arquivo de despejo razoavelmente bom.

Então .. você pode matar qualquer sessão ativa, fazer a cópia do arquivo, desligar o servidor e então continuar a partir daí.

    
por 30.06.2011 / 22:26

Tags