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
undlicense.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
incrx-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
Bei Ihrem Konto anmelden