Migration de la base de données vBulletin 5 - Erreurs de script d'importation

Eh bien, « mauvaise nouvelle » pour toi Jammy alors.

Nous avons décidé que le script était dans un état si inachevé que nous le réécrivons à partir de zéro pour migrer directement notre installation vb3 vers Discourse. En utilisant également C#, ce qui le rend plusieurs ordres de grandeur plus rapide.

Si nous parvenons à rendre le script suffisamment « générique », nous l’ouvrirons sur GitHub au public, mais je doute qu’il y ait beaucoup d’intérêt à migrer d’anciennes communautés encore bloquées sur vb3 aujourd’hui.

2 « J'aime »

Juste une petite mise à jour. Grâce au travail d’un petit groupe incroyablement dévoué, nous avons presque terminé.

À partir de lundi prochain, nous commencerons quelques tests sur une machine de staging, mais les résultats sont prometteurs.

Voici les chiffres totaux dont nous disposons :

En termes de taille, la base de données au format vbulletin3 pèse environ 8 Go.

Et les tests effectués à partir de machines locales se connectant à la base de données source à distance durent environ 6 heures.

Le script migre tous les forums/sous-forums, en les traduisant en catégories et sous-catégories. Il nécessite des sous-catégories de 3ème niveau car nous avons un forum de style assez ancien et certains forums de “clan” y sont hébergés et sont vraiment TRÈS imbriqués.

Tout ce qui est au-delà du 3ème niveau est automatiquement converti en tag, en conservant la structure hiérarchique qu’il avait en termes de relation parent/enfant de sous-forum (en utilisant des groupes de tags).

Chaque sous-forum qui avait des permissions personnalisées (lecture seule par exemple), ou était réservé aux mods/admins, ou encore simplement caché avec un accès par mot de passe, est migré comme “accessible uniquement au personnel”. Il y en aura une douzaine au final et nous pourrons demander au personnel de les réactiver manuellement pour les bons groupes d’utilisateurs.

Les utilisateurs, les groupes d’utilisateurs et les messages privés sont également migrés. Les messages privés sont migrés à la “manière de Discourse”, c’est-à-dire qu’au lieu de N sujets avec 1 message, comme on le verrait dans une simple migration 1:1 de la base de données (structure de base de données vraiment stupide), ils seront organisés en fils de discussion comme le fait Discourse.

Le script effectue également déjà la cuisson, pour accélérer le processus, de tous les messages.

La migration des sujets et des messages se fait avec plusieurs connexions parallèles et essaiera toujours d’utiliser autant de connexions que la base de données source le permet.

Nous verrons combien de temps cela prend en moyenne sur une petite machine de 2vcore/4 Go de RAM, mais c’est déjà plusieurs ordres de grandeur plus rapide que le script de migration en masse actuel (inachevé) qui est disponible.

Plusieurs parties pourraient être mieux optimisées et une GRANDE partie est vraiment conçue sur mesure pour notre forum (nous avons même des mappings en JSON pour réorganiser une grande partie de la structure du forum afin qu’elle soit moins chaotique), donc je doute qu’elle puisse être utilisée par quelqu’un d’autre sans quelques ajustements, mais nous discuterons en interne si nous voulons rendre le dépôt source public après la fin de notre migration.

1 « J'aime »

Dernière mise à jour, je suppose.

Nous avons finalement réussi à tout aligner (infrastructure, code, utilisateurs, modérateurs, etc.) et à migrer. Cela s’est passé hier. Je ne mettrai pas de lien vers la communauté car je ne me souviens pas si c’est autorisé et de toute façon, c’est une communauté assez connue en Italie.

Voici les chiffres que nous obtenons en moyenne sur 30 jours, bots déjà filtrés.

Il y a bien sûr eu une pression considérable sur l’équipe de bénévoles qui s’en est occupée, et ce n’est pas encore fini car nous sommes encore en train de peaufiner le thème personnalisé et certains paramètres de fond de Discourse (je vais devoir ouvrir de nombreux sujets pour demander de l’aide/des clarifications/des indications, semble-t-il).

Notre script a réussi à migrer tout ce que nous voulions :

  • utilisateurs
  • groupes d’utilisateurs
  • statut de modérateur/banni/administrateur
  • messages privés
  • catégories
  • sujets
  • réponses

et ainsi de suite. Nous avons également intégré la cuisson dans le processus de migration lui-même car nous avons quelques personnalisations dans vBulletin pour permettre l’intégration de tweets, de vidéos YouTube et d’autres choses qui ne se traduiraient pas bien avec la façon dont Discourse les cuit par défaut.

Nous avons effectué les tests sur un 4vcore/8Go et l’ensemble de la migration s’est achevé en environ 7-8 heures.
Pour la production, nous avons suffisamment augmenté notre Patreon pour nous permettre un 8 vcore / 30 Go et l’ensemble a pris 4 heures.

Nous avons fait une diffusion en direct de la migration, avec quelques faux départs inclus (bien sûr :stuck_out_tongue:) et de la musique en fond sonore. Nous nous sommes bien amusés.

Vous pouvez voir les détails du nombre de sujets/messages et du calendrier sur la capture d’écran.
Les trois chronométrages sont : temps de lecture, temps de cuisson, temps d’écriture.

Ce fut une aventure épuisante mais exaltante et, @pfaffman, croyez-moi, vous avez évité une balle quand j’ai décidé de ne pas faire appel à votre aide.

À ce jour, le décompte des heures de MON temps uniquement pour ce projet est estimé à environ 25 000 £ :rofl:
Je ne compte pas le temps que les trois autres personnes y ont consacré ces 2 derniers mois environ, y travaillant souvent tard le soir.

Nous exécutons encore quelques scripts post-migration, l’un qui importe tous les avatars et un autre qui crée toutes les redirections de permaliens afin que les liens écrits à l’intérieur des réponses qui pointent toujours vers l’ancien format d’URL redirigent correctement. Je m’attends à ce qu’ils se terminent dans les prochaines 24 heures.

Nous discuterons, dans environ deux semaines, si nous pouvons nettoyer le dépôt de notre script et l’offrir en open source. Je ne peux pas prendre cette décision seul, bien sûr.

Edit : Ajout de la migration complète de tous les avatars d’utilisateurs + des permaliens des références internes aux sujets/catégories

image

Exécuté après la migration principale des données.

Cordialement

3 « J'aime »

Cela semble vrai. Votre code est plutôt génial, bien que le laisser tourner pendant un mois aurait probablement donné le même résultat final. Une importation finale aurait probablement pris quelques heures, voire moins.

Content que vous ayez réussi ! Félicitations pour un travail bien fait.

1 « J'aime »

Je veux dire, le but était de ne pas fermer le site web pendant un mois en attendant sa migration :slight_smile:

De plus, c’est un peu difficile quand le script officiel manque des morceaux :thinking:

Vous n’auriez pas eu besoin de le faire. Vous exécuteriez le script, laissant le site en ligne. Lorsque le script serait terminé, vous le réexécuteriez ; il ignorerait les données déjà importées, donc il s’exécuterait beaucoup plus rapidement. Vous pourriez avoir à le faire quelques fois, mais finalement cela prendrait quelques minutes ou quelques heures, car il n’y aurait pas beaucoup de nouvelles données à traiter. Ensuite, vous arrêteriez l’ancien site et l’exécuteriez une dernière fois. Par défaut, le script vérifie chaque utilisateur et chaque publication, mais vous pouvez également définir IMPORT_AFTER pour lui fournir une date afin qu’il ignore complètement les données plus anciennes, ce qui prendrait très peu de temps.

Salut ! Je suis l’un des gars qui a travaillé sur ça.
Personnellement, ce fut une expérience d’apprentissage très enrichissante, et nous devons encore régler les derniers problèmes, mais toute la communauté a réagi positivement : le nouveau fil de discussion sur les réactions du forum a atteint…

eh bien, ce nombre de messages en environ 24 heures :smile:

Je ne sais pas combien d’autres cas existent, dans la nature, d’installations vB3 qui nécessitent une migration, mais - en espérant que ce fil de discussion puisse aider quelqu’un à l’avenir - cela peut être fait, ne désespérez pas trop. C’est beaucoup de travail, mais cela peut être fait :smile:

3 « J'aime »