Ich teile meine Erkenntnisse, während ich eine Migration von phpBB3 zu Discourse durchführe.
Lösungen beinhalten:
PostgreSQL-Quelldatenbank
Emoji
Anpassungen am Importer (Behebung des Zitat-Bugs, verbesserte BBCode-Unterstützung (einschließlich YouTube), Anhangskommentare)
Weich gelöschte Beiträge werden als normale Beiträge importiert
Ich bin sehr wählerisch, daher sollten Sie, wenn Sie mir folgen, ein ziemlich gutes Ergebnis erzielen können.
Ich erwäge, von phpbb zu Discourse zu wechseln (installierte Versionshistorie: 3.2.1 - 3.2.8).
Das Problem ist, dass ich PostgreSQL für die Datenbank verwende. Vorschläge? Ich habe es noch nicht ausprobiert, gehe aber davon aus, dass es basierend auf dem OP noch nicht unterstützt wird.
Kam das neue Importskript jemals heraus? Ich sehe, das war etwas über ein Jahr her.
Ist dieser Importer derjenige, der veraltet sein wird? Wie ist der Status des „neuen“? Ich versuche zu entscheiden, wie viel Aufwand ich hier investiere – wird es einen Upstream-Wert geben?
Ich habe mich selbst nicht mit dem Problem von PostgreSQL zu MySQL beschäftigt, aber rein aus der Perspektive der Migration von phpBB zu Discourse ist meine Meinung: Tun Sie alles, was nötig ist, um die Migration zu bewerkstelligen.
Ich habe zwei phpBB-Foren nach Discourse migriert, und obwohl es wie üblich das übliche Murren einer kleinen Anzahl von Benutzern gab, das man bei jeder Änderung bekommt, sind die Vorteile von Discourse es absolut wert! Nicht nur ist Discourse einfacher zu warten und zu verwalten, sondern das integrierte Benutzerengagement, die Bildverarbeitung, die Benutzeranpassung und die Lesbarkeit von Discourse sind nur einige der Funktionen, die phpBB so weit voraus sind, dass kein Vergleich möglich ist. Sie erhalten auch einen viel besseren Support mit Discourse.
Ich bin kein Experte, aber eine schnelle Suche zeigt, dass Sie von PostgreSQL zu MySQL migrieren könnten, indem Sie einen Schema-Dump durchführen, die Datentypen in den Schema-Anweisungen ändern, um sie an die von MySQL verwendeten anzupassen, das geänderte Schema verwenden, um die Tabellen in einer MySQL-Datenbank zu erstellen, und dann einen CSV-Export und -Import Tabelle für Tabelle durchführen.
Sobald Sie die MySQL-Datenbank haben, könnten Sie das normale phpBB-Migrationsskript verwenden und alle Ihre Anhänge haben.
Ich wollte nicht andeuten, dass es einfach wäre, nur dass es die Mühe wert ist, sogar manuell möglich ist und es reichlich Ressourcen zu geben scheint, um es zu erreichen, sowohl mit automatisierten Werkzeugen als auch manuell.
Da ich Ruby hasse und der bestehende Importer zugunsten eines Massenimporteurs (der noch nicht gut genug für meine Zwecke ist) veraltet sein wird, gehe ich die PostgreSQL → MySQL-Migrationsstrategie an.
Ich komme mit dem Migrationsassistenten von MySQL Workbench gut voran. Ich werde eine kleine Anleitung schreiben, wenn es erfolgreich ist, aber bisher sieht es vielversprechend aus.
Im Grunde schlägt MySQL Workbench beim Importieren von Unicode fehl. Ich werde es morgen mit MariaDB versuchen und sehen, ob ich die Standard-Datenbankkodierung oder etwas anderes vor dem Import einstellen kann.
Es wäre großartig gewesen, wenn MySQL Workbench funktioniert hätte. Ich habe eine Reihe von Fehlerberichten dazu gesehen, als ich mir die Optionen angesehen habe, und deshalb habe ich es nicht empfohlen.
Ich habe die Methode mit dem Schema-Dump und dem CSV-Export/Import bereits einmal erwähnt und werde sie nur noch einmal mit einer leichten Modifikation erwähnen, um sie viel einfacher zu machen, und dann schweigen.
Wenn Sie einen GUI-Weg einschlagen möchten:
Besorgen Sie sich einen Export aller Tabellen nur mit der Struktur aus einer funktionierenden Kopie derselben Version von phpBB3, die Sie verwenden und die MySQL/MariaDB ausführt. Es würde jemanden buchstäblich zwei Minuten dauern, einen aus phpMyAdmin zu erstellen, das auf den meisten Webhosts verfügbar ist, die MySQL/MariaDB ausführen. (Alternativ können Sie die CREATE TABLE-Anweisungen, die Sie benötigen, aus den phpBB3-Installationsskripten erhalten, wenn Sie niemanden dazu bringen können, den Export nur mit der Struktur für Sie durchzuführen, oder sogar ein günstiges Webhosting-Konto verwenden, um eine saubere Installation Ihrer Version von phpBB3 in einer MySQL/MariaDB-Umgebung durchzuführen und dann die Daten in den erstellten Tabellen zu löschen, um eine leere MySQL/MariaDB-Datenbank zu erstellen.)
Greifen Sie auf einen Webhost mit MySQL/MariaDB und phpMyAdmin zu, erstellen Sie die Datenbank und importieren Sie die Struktur aus dem in Schritt 1 erstellten Export nur mit der Struktur mithilfe von phpMyAdmin.
Erstellen Sie einen CSV-Export für jede Tabelle aus Ihrer PostgreSQL-Datenbank und führen Sie einen CSV-Import in die entsprechende Tabelle mithilfe von phpMyAdmin in Ihrer neuen MySQL/MariaDB-Datenbank durch.
Ich denke, das wird Probleme mit Zeichensätzen und Kodierungen verhindern, und Sie müssen nicht alle entsprechenden Datentypen und Feldgrößen herausfinden, die erforderlich wären, wenn Sie versuchen würden, den Schema-Dump manuell von PostgreSQL zu konvertieren.
Ich kann Ihnen eine SQL-Anweisung nur mit der Struktur geben, aber die einzige Datenbank, die ich noch habe, ist von phpBB3 3.3.8, daher kann dies zu weiteren Problemen führen, wenn Sie v. 3.2.x verwenden.
haha. ja, es brauchte einige nicht offensichtliche Tricks, um es überhaupt so weit zum Laufen zu bringen, wie ich es geschafft habe. Ich denke, es könnte immer noch funktionieren, aber danke, dass du mir eine weitere Möglichkeit zum Erkunden gibst.
ok, phew. hier ist meine Lösung für den PostgreSQL-Import.
dies bringt Sie von einem Postgres-Dump zu einem funktionierenden MariaDB-Server, in den Sie den Importer einstecken können. erfordert Docker Compose.
es funktioniert für phpbb 3.2. keine Ahnung von 3.3. wenn Sie dringend 3.3-Unterstützung benötigen, kann ich versuchen, es zu reparieren, wenn Sie mir einen phpbb 3.3 pg_dumpall-Dump geben.
Hier ist der Rohbeitrag, der nach Discourse migriert wurde:
[quote=", post:37, topic:1893"]
foo
[/quote]
bar
Die migrierten postid und topicid sind korrekt, aber der Benutzername fehlt. Dies führt dazu, dass er nicht interaktiv ist. Wenn der Benutzername ein leerer String ist, wird das Zitat nicht erweitert und man kann nicht darauf klicken, um dem Verweis auf den Originalbeitrag zu folgen.
Kann ich auf eine bessere Erfahrung hoffen, ohne Verbesserungen am Importer vorzunehmen? D.h. mache ich etwas falsch?
Ich habe das letzte Problem noch nicht gelöst, aber hier ist eine weitere Frage.
Ich stelle fest, dass nach Abschluss des Imports und dem Starten des App-Containers mein noch vorhandener phpBB-Server stark beansprucht wird. Ich glaube, das passiert während der Sidekiq-Nachbearbeitungsphase.
phpBB existiert noch unter www.example.com, und Discourse ist unter dc.example.com
Ich versuche zu verstehen, was tatsächlich passiert, welche Einstellungen während dieser Testmigration sinnvoll sind und welche Einstellungen für die endgültige Migration sinnvoll sein werden. Und ob ich phpBB für diese Sidekiq-Nachbearbeitung laufen lassen muss. Ich frage, weil ich keine Ahnung habe, was bei der Nachbearbeitung passiert.
Einige möglicherweise relevante Einstellungen in meiner aktuellen settings.yml:
import:
# Set this if you import multiple phpBB forums into a single Discourse forum.
site_name:
site_prefix:
# this is needed for rewriting internal links in posts
original: example.com # without http(s)://
new: https://dc.example.com # with http:// or https://
Wenn es noch etwas gibt, das ich mir ansehen muss, lassen Sie es mich bitte wissen.
Eine weitere Sache, die mir nicht klar ist, ist der www-Subdomain. Ich leite derzeit mit nginx für phpBB auf www um. Spielt es also im obigen Beispiel eine Rolle, ob ich original: example.com oder original: www.example.com angebe? Ähnliche Frage für new, wenn ich die endgültige Migration durchführe. Meine Benutzer würden tatsächlich von www.example.com auf Discourse zugreifen, aber ich weiß nicht, was die beste Vorgehensweise ist.
Ich bin ziemlich wählerisch, was die Migration meines Forums angeht, daher verbessere ich den Importer weiter. Ich bin mir nicht sicher, ob ich mir die Mühe machen werde, PRs zu erstellen, da der Importer veraltet ist und einige meiner Korrekturen eher spezifisch für mein Forum sind, aber dieser Branch wird all meine Korrekturen kombiniert enthalten, falls er für jemanden nützlich ist:
Ich habe das Zitateproblem behoben, Unterstützung für einige häufig hinzugefügte BBcodes hinzugefügt, das Parsen von YouTube-Links weniger fehlerhaft gemacht und die Erweiterung für Erwähnungen/simplementions unterstützt. Ich habe noch mehr zu verbessern, wie z. B. die Unterstützung für mehrere Website-Präfixe (Hauptanwendungsfall ist, wenn Sie Links auf Ihrem Forum zu example.com und www.example.com haben).
Obwohl ich einige nicht-Vanilla-Sachen unterstütze, sollte es kein Problem sein, ihn auf einem Standard-phpBB-Forum ohne Erweiterungen auszuführen. Ich empfehle sowieso, meine zu verwenden.
Der einfachste Weg, ihn zu verwenden, ist, meinen Branch irgendwoher zu ziehen und das Verzeichnis der Import-Skripte im Container mit einem Bind-Mount zu überschreiben.
d. h. meine Änderungen irgendwoher ziehen:
git clone --filter=blob:none --no-checkout https://github.com/ftc2/discourse.git discourse_dev
cd discourse_dev
git sparse-checkout set --cone
git switch phpbb_import
git sparse-checkout set script/import_scripts
Fügen Sie dann dies zu Ihrer import.yml-Containerkonfiguration hinzu:
Bauen Sie dann den Import-Container neu. Nachdem Sie ihn neu erstellt haben, möchten Sie wahrscheinlich dort, wo Sie mein Repository gezogen haben, einen Reset durchführen, da der Build-Prozess meine Dateien überschreiben wird, lol.
cd /path/to/discourse_dev
git reset --hard HEAD
chown -R 1000:1000 .