Migrando banco de dados vBulletin 5 - Erros no script de importação

Bem, “más notícias” para você, Jammy, então.

Decidimos que o script está em um estado tão inacabado que o reescreveremos do zero para migrar diretamente nossa instalação vb3 para o Discourse. Usando C# também, o que o torna várias ordens de magnitude mais rápido.

Se conseguirmos tornar o script “genérico” o suficiente, abriremos o GitHub ao público, mas duvido que haja muito interesse em migrar comunidades antigas ainda presas ao vb3 hoje.

2 curtidas

Uma breve atualização. Graças ao trabalho de um pequeno grupo incrivelmente dedicado, estamos quase terminando.

A partir da próxima segunda-feira, iniciaremos algumas execuções de teste em uma máquina de staging, mas os resultados são promissores.

Estes são os números totais que temos:

Em termos de tamanho, o banco de dados no formato vbulletin3 tem cerca de 8 GB.

E os testes executados a partir de máquinas locais conectando-se ao banco de dados de origem remotamente levam cerca de 6 horas para serem concluídos.

O script migra todos os fóruns/subfóruns, traduzindo-os em categorias e subcategorias. Requer subcategorias de 3º nível porque temos um fórum de estilo bastante antigo e há alguns fóruns de “clã” hospedados lá que são realmente MUITO aninhados.

Qualquer coisa além do 3º nível é automaticamente convertida em uma tag, mantendo a estrutura hierárquica que tinha em termos de relacionamento pai/filho de subfórum (usando grupos de tags).

Todos os subfóruns que foram definidos com permissão personalizada (somente leitura, por exemplo), ou apenas para mods/admin, ou novamente, apenas ocultos com acesso por senha, estão sendo migrados como “acessíveis apenas para a equipe”. Eles serão cerca de uma dúzia no final e poderemos ter a equipe reativando-os manualmente para os grupos de usuários corretos.

Usuários, grupos de usuários e mensagens privadas também são migrados. As mensagens privadas são migradas no “estilo discourse”, o que significa que, em vez de N tópicos com 1 mensagem, como você veria em uma migração simples de banco de dados 1:1 (estrutura de banco de dados realmente boba), ele terá a forma organizada de thread que o discourse usa.

O script também já faz o “cooking” para acelerar o processo, para todas as postagens.

A migração de tópicos e postagens é feita com várias conexões paralelas e sempre tentará usar o máximo de conexões que o banco de dados de origem permitir.

Veremos quanto tempo leva em média em uma máquina pequena de 2vcore/4gb de RAM, mas já é várias ordens de magnitude mais rápido do que o script de migração em massa atual (inacabado) que está disponível.

Várias partes poderiam ser otimizadas melhor e MUITO disso é realmente projetado sob medida para o nosso fórum (temos até mapeamento em json para reorganizar grande parte da estrutura do fórum para que seja menos caótico), então duvido que possa ser adaptado e usado por qualquer outra pessoa sem alguns ajustes, mas discutiremos internamente se queremos abrir o repositório de código-fonte ao público após a conclusão de nossa migração.

1 curtida

Última atualização, eu acho.

Finalmente conseguimos alinhar tudo (infraestrutura, código, usuários, mods, etc.) e migrar. Aconteceu ontem. Não vou linkar a comunidade, pois não me lembro se é permitido e, de qualquer forma, é uma comunidade bem conhecida na Itália.

Estes são os números que temos em média em 30 dias, bots já filtrados.

Claro, houve bastante pressão sobre a equipe de voluntários que cuidou disso, e ainda não acabou, pois ainda estamos ajustando o tema personalizado e algumas configurações de fundo do Discourse (parece que terei que abrir muitos tópicos pedindo ajuda/esclarecimento/direções).

Nosso script conseguiu migrar tudo o que queríamos:

  • usuários
  • grupos de usuários
  • status de moderador/banido/administrador
  • mensagens privadas
  • categorias
  • tópicos
  • respostas

e assim por diante. Também integramos a “cozinhada” no próprio processo de migração, pois temos algumas personalizações no vBulletin para permitir a incorporação de tweets, vídeos do YouTube e outras coisas que não seriam bem traduzidas pela forma como o Discourse as “cozinha” por padrão.

Executamos os testes em um servidor 4vcore/8GB e toda a migração foi concluída em cerca de 7-8 horas.
Para produção, arrecadamos o suficiente em nosso Patreon para bancar um servidor 8 vcore / 30 GB e tudo levou 4 horas.

Fizemos uma transmissão ao vivo da migração, com algumas falsas partidas incluídas (claro :stuck_out_tongue:) e alguma música de fundo. Nos divertimos bastante.

Você pode ver os detalhes do número de tópicos/postagens e o tempo na captura de tela.
Os três tempos são: tempo de leitura, tempo de cozinhada, tempo de escrita.

Foi uma aventura exaustiva, mas emocionante e, @pfaffman, acredite em mim, você se livrou de um problema quando decidi não aceitar sua ajuda.

Até hoje, a contagem das horas apenas do MEU tempo para este projeto é estimada em aproximadamente £ 25k :rofl:
Não estou contando o tempo que as outras três pessoas dedicaram a isso nos últimos 2 meses, muitas vezes trabalhando até tarde da noite.

Ainda estamos executando alguns scripts pós-migração, um que importa todos os avatares e outro que cria todos os redirecionamentos de permalink para que os links escritos dentro das respostas que ainda apontam para o formato de URL antigo realmente redirecionem corretamente. Espero que eles terminem nas próximas 24 horas.

Discutiremos, daqui a algumas semanas, se podemos limpar o repositório do nosso script e oferecê-lo como open source. Não posso tomar essa decisão sozinho, é claro.

Edição: Apenas adicionando a migração completa de todos os avatares de usuário + permalinks de referências internas a tópicos/categorias

image

Executado após a migração principal dos dados.

Abraços

3 curtidas

Isso parece verdade. Seu código parece muito bom, embora apenas deixar o script rodar por um mês provavelmente teria dado o mesmo resultado final. Uma importação final provavelmente teria sido executada em poucas horas ou talvez menos.

Fico feliz que você tenha conseguido! Parabéns pelo trabalho bem feito.

1 curtida

Quer dizer, o objetivo era não fechar o site por um mês esperando a migração :slight_smile:

Além disso, é meio difícil quando o script oficial está com peças faltando :thinking:

Você não precisaria. Você executaria o script, deixando o site no ar. Quando o script terminasse, você o executaria novamente; ele pularia os dados já importados, então rodaria muito mais rápido. Você pode precisar fazer isso algumas vezes, mas eventualmente terminaria em minutos ou horas, pois não haveria muitos dados novos para processar. Então você congelaria o site antigo e o executaria pela última vez. Por padrão, o script verifica cada usuário e post, mas você também pode definir IMPORT_AFTER para fornecer uma data, para que ele ignore completamente os dados mais antigos, então levaria muito pouco tempo.

Olá! Eu sou um dos caras que trabalhou nisso.
Pessoalmente, tem sido uma experiência de aprendizado muito enriquecedora, e ainda temos que resolver os últimos problemas, mas toda a comunidade reagiu positivamente: o novo tópico de reações do fórum alcançou…

bem, este número de posts em cerca de 24 horas :smile:

Não sei quantos outros casos existem por aí, em uso, de instalações vB3 que precisam de migração, mas - esperando que este tópico possa ajudar alguém no futuro - isso pode ser feito, não desanime muito. É muito trabalho, mas pode ser feito :smile:

3 curtidas