Wie Sie richtig wissen, unterstützt NodeBB zwei Datenbank-Backends: Redis und MongoDB. Das Discourse-Importskript unterstützt beide. In diesem Tutorial lernen wir, wie wir NodeBB mit MongoDB als Datenbank-Backend migrieren. Wir verwenden den NodeBB-Importer mit dem mongo-Adapter. Wenn Ihr NodeBB-Forum Redis als Backend verwendet, folgen Sie bitte diesem Tutorial, das den redis-Adapter demonstriert.
Der Plan
- Vorbereitung der Entwicklungsumgebung.
- Export der Datenbank aus der Produktionsumgebung.
- Import der Produktionsdatenbank in eine Discourse-Instanz.
- Ausführung des Importskripts.
Was migriert werden kann
- Gruppen
- Anhänge
- Kategorien
- Root-Kategorie => Root-Kategorie
- Unterkategorie & Unter-Unterkategorie => Unterkategorie
- Themen & Beiträge
- angepinntes Thema => angepinntes Thema
- gesperrtes Thema => geschlossenes Thema
- Themenaufrufe
- upvoted_by
- Stile, Erwähnungen, Emojis und Anhänge.
- Benutzer (mit folgenden Attributen)
- Profilhintergrund
- Avatare
- Sperrstatus
- Benutzername
- Name
- Administrator
- Biografie
- Gruppe
- Website
- Standort
- Beitrittsdatum
Vorbereitung der lokalen Entwicklungsumgebung
Wie in unserem Plan erwähnt, müssen wir zunächst unsere Entwicklungsumgebung vorbereiten. Folgen Sie einer dieser Anleitungen, um Discourse selbst zu installieren:
Bitte konsultieren Sie diese Anleitung, falls Sie Probleme beim Einrichten des Discourse-Servers haben.
Installieren Sie anschließend den MongoDB-Datenbankserver.
Ubuntu-18-04:
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | sudo apt-key add -
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org
$ sudo service mongod status
Für weitere Details verweisen wir auf den offiziellen Leitfaden.
Mac OS:
$ brew tap mongodb/brew
$ brew install mongodb-community@4.0
$ brew services start mongodb-community@4.0
$ brew services status mongodb-community@4.0
Für weitere Details verweisen wir auf den offiziellen Leitfaden.
Windows 10:
Laden Sie das Installationsprogramm herunter und installieren Sie MongoDB als Windows-Dienst:
https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.12-signed.msi
Führen Sie die cmd mit Administratorrechten aus, um zu überprüfen, ob der MongoDB-Server ordnungsgemäß funktioniert:
"C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe"
Für weitere Details verweisen wir auf den offiziellen Leitfaden.
Diese Umgebung wird unser Discourse-Server sein.
Exportieren des Produktionsdatenbank-Dumps:
Fahren Sie Ihr NodeBB-Forum (Produktionsserver) herunter.
$ cd /path_to_nodebb
$ ./nodebb stop
Fahren Sie Ihre Datenbank herunter:
$ sudo service mongodb stop
Sichern Sie Ihre Datenbank:
$ mongodump --out ~/my_backup_path/
Die Ausgabe des vorherigen Befehls sieht ungefähr so aus:
2019-08-16T15:17:09.845+0300 done dumping admin.system.users (1 document)
2019-08-16T15:17:09.846+0300 done dumping admin.system.version (2 documents)
2019-08-16T15:17:09.849+0300 done dumping nodebb.sessions (10 documents)
2019-08-16T15:17:09.850+0300 done dumping nodebb.socket.io (215 documents)
2019-08-16T15:17:09.854+0300 done dumping nodebb.objects (1488 documents)
Beachten Sie, dass das Backup tatsächlich ein Verzeichnis und nicht nur eine Datei ist.
Sie können die Größe Ihrer Datenbank überprüfen, indem Sie
use myDatabaseund danndb.stats().dataSize;innerhalb dermongo-CLI ausführen. Der zurückgegebene Wert ist in Bytes.
Sichern Sie Ihre Forum-Assets:
$ cd /path_to_nodebb_root_directory/
$ tar -czf ./uploads.tar.gz ./public/uploads
Nachdem Sie Ihre Datenbank und Forum-Assets gesichert haben, sollten Sie diese auf den Discourse-Server kopieren.
Importieren der Datenbank
Da wir nun unsere Datenbank haben, können wir sie in unsere lokale MongoDB-Instanz importieren:
$ mongorestore ~/path_of_my_backup_directory/
Für weitere Optionen verweisen wir auf den offiziellen Leitfaden.
Als Nächstes müssen Sie die uploads.tar.gz entpacken, damit der Importeur die Assets importieren kann:
$ tar xvzf uploads.tar.gz
Ausführen des Importskripts
Da unsere Datenbank und Assets jetzt vorhanden sind, sind wir bereit, unser Importskript auszuführen. Zuvor müssen wir das NodeBB-Importskript bearbeiten, um es an unsere Bedürfnisse anzupassen.
Dies ist der Pfad zu Ihrem NodeBB-Upload-Ordner:
ATTACHMENT_DIR = '/absolute_path/uploads'
Als Nächstes müssen wir dem Importeur mitteilen, dass er den mongo-Adapter anstelle des redis-Adapters verwenden soll:
adapter = NodeBB::Mongo
@client = adapter.new('mongodb://127.0.0.1:27017/nodebb')
# adapter = NodeBB::Redis
# @client = adapter.new(
# host: "localhost",
# port: "6379",
# db: 14
# )
Führen Sie den Importeur mit einem sauberen Discourse und Unterstützung für das mongo-Gem aus:
$ cd ~/discourse
$ echo "gem 'mongo'" >> Gemfile
$ bundle install
$ bundle exec rake db:drop db:create db:migrate
$ bundle exec ruby script/import_scripts/nodebb/nodebb.rb
Der Importeur verbindet sich mit der MongoDB-Instanz und migriert alles nach Discourse.
Nachdem der Importeur abgeschlossen ist, starten Sie Discourse:
$ bundle exec rails server
Starten Sie Sidekiq, um die migrierten Daten zu verarbeiten:
$ bundle exec sidekiq
Sie können den Fortschritt unter http://localhost:3000/sidekiq/queues überwachen.
Führen Sie ein Discourse-Backup durch und laden Sie es auf Ihren Discourse-Produktionsserver hoch, indem Sie diesem Tutorial folgen.
![]()
Wenn Sie Fragen zum Prozess haben, helfe ich gerne weiter.
Viel Erfolg bei der Migration ![]()


