Migrazione database vBulletin 5 - Errori script di importazione

Bene, “cattive notizie” per te Jammy allora.

Abbiamo deciso che lo script è in uno stato così incompiuto che lo stiamo riscrivendo da zero per migrare direttamente la nostra installazione vb3 in discourse. Utilizzando anche C# il che lo rende diversi ordini di grandezza più veloce.

Se riusciremo a rendere lo script “generico” a sufficienza, lo renderemo pubblico su GitHub, ma dubito che ci sarà molto interesse nel migrare vecchie community ancora bloccate su vb3 oggi.

2 Mi Piace

Solo un breve aggiornamento. Grazie al lavoro di un piccolo gruppo incredibilmente dedicato, abbiamo quasi finito.

Da lunedì prossimo inizieremo alcune prove su una macchina di staging, ma i risultati sono promettenti.

Questi sono i numeri totali che abbiamo:

Come dimensioni, il DB in formato vbulletin3 è di circa 8 GB.

E i test eseguiti da macchine locali che si connettono al DB di origine da remoto richiedono circa 6 ore per essere completati.

Lo script migra tutti i forum/sottoforum, traducendoli in categorie e sottocategorie. Richiede sottocategorie di 3° livello perché abbiamo un forum piuttosto vecchio stile e ci sono alcuni forum di "clan" ospitati lì che sono davvero MOLTO annidati.

Qualsiasi cosa oltre il 3° livello viene automaticamente convertita in un tag, mantenendo la struttura gerarchica che aveva in termini di relazione genitore/figlio del sottoforum (utilizzando gruppi di tag).

Ogni sottoforum che era impostato con permessi personalizzati (sola lettura, ad esempio), o solo per mod/admin o ancora, semplicemente nascosto con accesso tramite password, viene migrato come "accessibile solo allo staff". Alla fine saranno una dozzina e potremo far riattivare loro manualmente i permessi per i corretti usergroup.

Vengono migrati anche utenti, usergroup e messaggi privati. I messaggi privati vengono migrati nel "modo discourse", il che significa che invece di N argomenti con 1 messaggio come si vedrebbe in una semplice migrazione 1:1 del database (struttura del database davvero sciocca), avrà il modo organizzato per thread che utilizza discourse.

Lo script esegue già anche la cottura, per velocizzare il processo, di tutti i post.

La migrazione di argomenti e post viene eseguita con diverse connessioni parallele e cercherà sempre di utilizzare quante più connessioni consentite dal DB di origine.

Vedremo quanto tempo impiegherà in media su un piccolo sistema 2vcore/4 GB di RAM, ma è già diversi ordini di grandezza più veloce dello script di migrazione di massa attuale (incompiuto) disponibile.

Diverse parti potrebbero essere ottimizzate meglio e MOLTE sono progettate su misura per il nostro forum (abbiamo persino un mapping in json per riorganizzare gran parte della struttura del forum in modo che sia meno caotico), quindi dubito che possa essere utilizzato da chiunque altro senza qualche modifica, ma discuteremo internamente se vogliamo rendere pubblico il repository sorgente dopo il completamento della nostra migrazione.

1 Mi Piace

Ultimo aggiornamento, immagino.

Siamo finalmente riusciti ad allineare tutto (infrastruttura, codice, utenti, moderatori, ecc.) e a migrare. È successo ieri. Non linkerò la community perché non ricordo se è permesso e comunque è una community piuttosto conosciuta in Italia.

Questi sono i numeri che facciamo in media in 30 giorni, bot già filtrati.

C’è stata ovviamente molta pressione sul team di volontari che se ne è occupato, e ora non è ancora finita perché stiamo ancora mettendo a punto il tema personalizzato e alcune impostazioni di background di discourse (dovrò aprire molti argomenti chiedendo aiuto/chiarimenti/indicazioni, a quanto pare).

Il nostro script è riuscito a migrare tutto ciò che volevamo:

  • utenti
  • gruppi di utenti
  • stato di moderatore/ban/amministratore
  • messaggi privati
  • categorie
  • argomenti
  • risposte

e così via. Abbiamo anche integrato la cottura nel processo di migrazione stesso poiché abbiamo alcune personalizzazioni in vbulletin per consentire l’incorporamento di tweet, video di YouTube e altre cose che non si tradurrebbero bene con il modo in cui discourse li cuoce per impostazione predefinita.

Abbiamo eseguito i test su un 4vcore/8GB e l’intera migrazione è stata completata in circa 7-8 ore.
Per la produzione abbiamo raccolto abbastanza dal nostro Patreon da permetterci un 8 vcore / 30 GB e l’intera operazione ha richiesto 4 ore.

Abbiamo fatto una diretta della migrazione, con un paio di falsi partenze incluse (ovviamente :stuck_out_tongue:) e un po’ di musica in sottofondo. Ci siamo divertiti parecchio.

Puoi vedere i dettagli del numero di argomenti/post e dei tempi nello screenshot.
I tre tempi sono: tempo di lettura, tempo di cottura, tempo di scrittura.

È stata un’avventura estenuante ma esaltante e, @pfaffman, credimi, hai evitato un proiettile quando ho deciso di non accettare il tuo aiuto.

Ad oggi, il conteggio delle ore solo del MIO tempo per questo progetto è stimato approssimativamente in £ 25k :rofl:
Non sto contando il tempo che le altre tre persone vi hanno dedicato negli ultimi 2 mesi circa, spesso lavorandoci fino a tarda notte.

Stiamo ancora eseguendo alcuni script post-migrazione, uno che importa tutti gli avatar e un altro che crea tutti i reindirizzamenti dei permalink in modo che i link scritti all’interno delle risposte che puntano ancora al vecchio formato URL reindirizzino correttamente. Mi aspetto che finiscano nelle prossime 24 ore.

Discuteremo, tra un paio di settimane circa, se possiamo ripulire il repository del nostro script e offrirlo open source. Non posso prendere da solo quella decisione, ovviamente.

Modifica: Aggiunta la migrazione completa di tutti gli avatar utente + permalink di riferimenti interni ad argomenti/categorie

image

Eseguito dopo la migrazione principale dei dati.

Saluti

3 Mi Piace

Sembra vero. Il tuo codice sembra piuttosto eccezionale, anche se lasciarlo semplicemente in esecuzione per un mese avrebbe probabilmente dato lo stesso risultato finale. Un’importazione finale probabilmente sarebbe durata poche ore o forse meno.

Sono contento che tu l’abbia fatto! Congratulazioni per un lavoro ben fatto.

1 Mi Piace

Voglio dire, il punto era non chiudere il sito per un mese in attesa della migrazione :slight_smile:

Inoltre, è piuttosto difficile quando lo script ufficiale manca di pezzi :thinking:

Non ne avresti avuto bisogno. Eseguiresti lo script, lasciando il sito attivo. Quando lo script fosse terminato, lo eseguiresti di nuovo; salterebbe i dati già importati, quindi sarebbe molto più veloce. Potresti doverlo fare un paio di volte, ma alla fine finirebbe in minuti o ore, poiché non ci sarebbero molti nuovi dati da elaborare. Quindi congeleresti il vecchio sito e lo eseguiresti un’ultima volta. Per impostazione predefinita, lo script controlla ogni utente e post, ma puoi anche impostare IMPORT_AFTER per fornirgli una data in modo che ignori completamente i dati più vecchi, quindi richiederebbe pochissimo tempo.

Ciao! Sono uno di quelli che ci ha lavorato.
Personalmente, è stata un’esperienza di apprendimento molto arricchente e dobbiamo ancora risolvere gli ultimi problemi, ma l’intera community ha reagito positivamente: il nuovo thread di reazioni del forum ha raggiunto…

beh, questo numero di post in circa 24 ore :smile:

Non so quanti altri casi ci siano là fuori, in giro, di installazioni vB3 che necessitano di migrazione, ma - sperando che questo thread possa aiutare qualcuno in futuro - si può fare, non disperate troppo. È molto lavoro, ma si può fare :smile:

3 Mi Piace