Frage

Wegen diverser Gründe (z.B. zur Stärkung der Infrastruktur) kann es sinnvoll sein, bereits vorhandene binäre Daten, die in einem DataStore [1] gespeichert sind, zueinander zu migrieren. Wie kann eine solche Migration durchgeführt werden?

Antwort, Auflösung

Derzeit gibt es kein Werkzeug, das eine solche DataStore-Migration durchführt. Mithilfe einer temporären CRX-Instanz, die über WebDAV [2] bereitgestellt wird, kann dies allerdings leicht erreicht werden. Das folgende Beispiel zeigt, wie Binärdateien von einem FileDataStore in ein DbDataStore migriert werden.
 
 Bitte beachten Sie Folgendes: Sie sollten dieses Verfahren an einer Testinstanz erproben und validieren, bevor Sie es auf eine Produkt-Instanz anwenden!

Temporäre CRX-Instanz vorbereiten

Der erste Schritt, um eine zweite einfache, temporäre CRX-Instanz mit DB-basiertem konfiguriertem Datastore (DbDataStore) einzurichten, ist:

  • Kopieren Sie crx-xxx-quickstart.jar und license.properties an einen temporären Speicherort wie /tmp/crx_dbdatastore
  • Führen Sie den Befehl zum Entpacken aus: java -jar crx-xxx-quickstart.jar -unpack
  • Sobald der Vorgang abgeschlossen ist, gehen Sie zum entpackten Verzeichnis crx-quickstart/server/webapps
  • Entpacken Sie die CRX-Web-Anwendung ins Verzeichnis crx-explorer_crx: unzip -d crx-explorer_crx crx-explorer_crx.war
  • Löschen Sie crx-explorer_crx.war
  • Bearbeiten Sie die Datei repository.xml

Die DataStore-Konfiguration muss angepasst werden, um die DbDataStore-Implementation zu verwenden, z. B.:

<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore"> <param name="url" value="jdbc:h2:~/test" /> <param name="user" value="sa" /> <param name="password" value="sa" /> <param name="databaseType" value="h2" /> <param name="driver" value="org.h2.Driver" <param name="maxConnections" value="3"/> <param name="copyWhenReading" value="true"/> <param name="tablePrefix" value=""/> <param name="schemaObjectPrefix" value=""/> <param name="minRecordLength" value="4096"/> </DataStore> 

Sobald das erledigt ist:

  • Kopieren Sie die Bibliothek, die den datenbankspezifischen Treiber enthält, nach crx-explorer_crx/WEB-INF/lib
  • Ändern Sie die Bezeichnung von crx-explorer_crx in crx-explorer_crx.war
  • Starten Sie diese CRX-Instanz

Während der Installation erstellt CRX eine Reihe von binären Dateien im Repository, die in der konfigurierten Datenbank gespeichert werden sollen. Überprüfen Sie, ob dies ordnungsgemäß funktioniert.

Erstellen Sie mit WebDAV eine temporäre CRX-Instanz

Der nächste Schritt besteht darin, die CRX-Instanz mithilfe von WebDAV [2] auf dem Server einzurichten, der momentan die CRX-Instanz hostet. In diesem Beispiel wird der WebDAV-Einrichtungs-Punkt /tmp/crxwebdav verwendet.

Kopieren von Daten aus FS in eine temporäre Instanz via WebDAV

Der FileDataStore erstellt in <crx_home>/crx-quickstart/repository/shared/repository/datastore standardmäßig binäre Dateien, wobei er das Hash des Inhalts der Datei als Dateinamen verwendet. Wenn Sie diese Datei in den temporären CRX mit konfigurierten DbDataStore kopieren, werden die gleichen Binärdateien mit den gleichen Hash-Codes erstellt. Dies kann in einem späteren Schritt wiederverwendet werden.
Kopieren Sie alle Dateien und Ordner rekursiv in den WebDAV-Einrichtungs-Punkt:

cd <crx_home> cp -Rv crx-quickstart/repository/shared/repository/datastore /tmp/crxwebdav 

Je nachdem, wie viele binäre Inhalte es gibt, kann das länger dauern. Sobald der rekursive Kopiervorgang abgeschlossen ist, können Sie auch die temporäre CRX-Instanz wieder aufheben und beenden.

Konfigurieren Sie den DataStore von CRX neu

Im nächsten Schritt modifizieren Sie die DataStore-Konfiguration der aktuellen CRX-Instanz (repository.xml), um dieselbe DbDataStore-Konfiguration zu verwenden, wie bei der temporären Instanz. Starten Sie danach die CRX-Instanz und überprüfen Sie, ob die Binärdateien wie zuvor verfügbar sind.

Sortieren

Nachdem der oben genannte Migrationsprozess verifiziert wurde, kann Folgendes gelöscht werden:

  • FileDataStore: crx-quickstart/repository/shared/repository/datastore
  • Temporäre CRX-Instanz

Gilt für

CRX1.3.x, CRX1.4.x, CRX2.x
 
[1] DataStore
[2] Über WebDAV auf Repository zugreifen

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie