Migración de base de datos vBulletin 5 - Errores en el script de importación

Bueno, “malas noticias” para ti, Jammy, entonces.

Decidimos que el script está en un estado tan inacabado que lo estamos reescribiendo desde cero para migrar directamente nuestra instalación de vb3 a Discourse. Usando C# también, lo que lo hace varios órdenes de magnitud más rápido.

Si logramos que el script sea lo suficientemente “genérico”, lo publicaremos en GitHub, pero dudo que haya mucho interés en migrar comunidades antiguas que todavía están atascadas en vb3 hoy en día.

2 Me gusta

Solo una rápida actualización. Gracias al trabajo de un grupo pequeño increíblemente dedicado, estamos casi terminados.

A partir del próximo lunes comenzaremos algunas pruebas en una máquina de staging, pero los resultados son prometedores.

Estos son los números totales que tenemos:

En cuanto al tamaño, la base de datos en formato vbulletin3 tiene alrededor de 8 GB.

Y las pruebas ejecutadas desde máquinas locales conectándose a la base de datos de origen de forma remota tardan alrededor de 6 horas en completarse.

El script migra todos los foros/subforos, traduciéndolos en categorías y subcategorías. Requiere subcategorías de 3er nivel porque tenemos un foro de estilo bastante antiguo y hay algunos foros de “clanes” alojados allí que están muy, muy anidados.

Cualquier cosa por debajo del 3er nivel se convierte automáticamente en una etiqueta, manteniendo la estructura jerárquica que tenía en términos de relación padre/hijo de subforo (usando grupos de etiquetas).

Cada subforo que tenía permisos personalizados (solo lectura, por ejemplo), o solo para moderadores/administradores, o nuevamente, simplemente oculto con acceso por contraseña, se está migrando como “solo accesible para el personal”. Al final habrá una docena y el personal podrá volver a habilitarlos manualmente para los grupos de usuarios correctos.

Los usuarios, grupos de usuarios y mensajes privados también se migran. Los mensajes privados se migran al “estilo discourse”, lo que significa que en lugar de N temas con 1 mensaje como verías en una simple migración 1:1 de la base de datos (estructura de base de datos realmente tonta), tendrá la forma organizada de hilos que utiliza discourse.

El script también ya está haciendo la “cocción” (preprocesamiento) para acelerar el proceso, de todas las publicaciones.

La migración de temas y publicaciones se realiza con varias conexiones paralelas y siempre intentará utilizar tantas conexiones como lo permita la base de datos de origen.

Veremos cuánto tiempo lleva en promedio en una máquina pequeña de 2vcore/4gb RAM, pero ya es varios órdenes de magnitud más rápido que el script de migración masiva actual (incompleto) que está disponible.

Varias partes podrían optimizarse mejor y MUCHO de esto está diseñado específicamente para nuestro foro (incluso tenemos mapeo en json para reorganizar gran parte de la estructura del foro para que sea menos caótica), por lo que dudo que pueda ser utilizado por alguien más sin algunas modificaciones, pero discutiremos internamente si queremos abrir el repositorio de código fuente al público después de que complete nuestra migración.

1 me gusta

Actualización final, supongo.

Finalmente logramos alinear todo (infraestructura, código, usuarios, mods, etc.) y migrar. Sucedió ayer. No enlazaré la comunidad ya que no recuerdo si está permitido y, de todos modos, es una comunidad bastante conocida en Italia.

Estos son los números que obtenemos en promedio en 30 días, bots ya filtrados.

Por supuesto, hubo bastante presión sobre el equipo de voluntarios que se encargó de ello, y aún no ha terminado, ya que todavía estamos puliendo el tema personalizado y algunas configuraciones de fondo de Discourse (parece que tendré que abrir muchos temas pidiendo ayuda/aclaraciones/direcciones).

Nuestro script logró migrar todo lo que queríamos:

  • usuarios
  • grupos de usuarios
  • estado de moderador/bloqueo/administrador
  • mensajes privados
  • categorías
  • temas
  • respuestas

y así sucesivamente. También integramos la “cocina” en el proceso de migración en sí, ya que tenemos algunas personalizaciones en vBulletin para permitir la incrustación de tweets, videos de YouTube y otras cosas que no se traducirían bien con la forma en que Discourse las “cocina” por defecto.

Ejecutamos las pruebas en un servidor 4vcore/8GB y toda la migración se completó en aproximadamente 7-8 horas.
Para producción, hemos recaudado lo suficiente en nuestro Patreon para permitirnos un servidor 8 vcore / 30 GB y todo el proceso tomó 4 horas.

Hicimos una transmisión en vivo de la migración, con un par de inicios en falso incluidos (por supuesto :stuck_out_tongue:) y algo de música de fondo. Nos divertimos bastante.

Puedes ver los detalles del número de temas/publicaciones y los tiempos en la captura de pantalla.
Los tres tiempos son: tiempo de lectura, tiempo de cocción, tiempo de escritura.

Ha sido una aventura agotadora pero emocionante y, @pfaffman, créeme, te libraste de un problema cuando decidí no aceptar tu ayuda.

A día de hoy, el recuento de las horas solo de MI tiempo para este proyecto se estima aproximadamente en £ 25k :rofl:
No estoy contando el tiempo que las otras tres personas dedicaron a esto en los últimos 2 meses, a menudo trabajando hasta tarde en la noche.

Todavía estamos ejecutando algunos scripts posteriores a la migración, uno que importa todos los avatares y otro que crea todas las redirecciones de enlaces permanentes para que los enlaces escritos dentro de las respuestas que aún apuntan al formato de URL antiguo redirijan correctamente. Espero que terminen en las próximas 24 horas.

Discutiremos, en un par de semanas más o menos, si podemos limpiar el repositorio de nuestro script y ofrecerlo como código abierto. Por supuesto, no puedo tomar esa decisión solo.

Editar: Solo agregando la migración completa de todos los avatares de usuario + enlaces permanentes de referencias internas a temas/categorías

image

Ejecutado después de la migración principal de datos.

Saludos

3 Me gusta

Eso suena cierto. Tu código suena bastante bien, aunque simplemente dejar que el script se ejecutara durante un mes probablemente habría dado el mismo resultado final. Una importación final probablemente se habría ejecutado en unas pocas horas o quizás menos.

¡Me alegro de que lo hayas conseguido! Felicidades por un trabajo bien hecho.

1 me gusta

Quiero decir, el objetivo era no cerrar el sitio web durante un mes esperando a que migrara :slight_smile:

Además, es bastante difícil cuando el script oficial tiene piezas faltantes :thinking:

No habrías necesitado hacerlo. Ejecutarías el script, dejando el sitio en funcionamiento. Cuando el script terminara, lo ejecutarías de nuevo; omitiría los datos ya importados, por lo que se ejecutaría mucho más rápido. Podrías tener que hacerlo un par de veces, pero finalmente terminaría en minutos u horas, ya que no habría muchos datos nuevos que procesar. Luego congelarías el sitio antiguo y lo ejecutarías una última vez. Por defecto, el script comprueba cada usuario y publicación, pero también puedes establecer IMPORT_AFTER para proporcionarle una fecha, de modo que ignore por completo los datos más antiguos, por lo que llevaría muy poco tiempo.

¡Hola! Soy uno de los que trabajó en esto.
Personalmente, ha sido una experiencia de aprendizaje muy enriquecedora, y todavía tenemos que pulir los últimos detalles, pero toda la comunidad ha reaccionado positivamente: el nuevo hilo de reacciones del foro alcanzó…

bueno, este número de publicaciones en unas 24 horas :smile:

No sé cuántos otros casos hay por ahí, en la vida real, de instalaciones de vB3 que necesitan migración, pero —esperando que este hilo pueda ayudar a alguien en el futuro— se puede hacer, no desesperes demasiado. Es mucho trabajo, pero se puede hacer :smile:

3 Me gusta