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?
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!
Der erste Schritt, um eine zweite einfache, temporäre CRX-Instanz mit DB-basiertem konfiguriertem Datastore (DbDataStore) einzurichten, ist:
crx-xxx-quickstart.jar
und license.properties
an einen temporären Speicherort wie /tmp/crx_dbdatastore
java -jar crx-xxx-quickstart.jar -unpack
crx-quickstart/server/webapps
crx-explorer_crx
: unzip -d crx-explorer_crx crx-explorer_crx.war
crx-explorer_crx.war
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:
crx-explorer_crx/WEB-INF/lib
crx-explorer_crx
in crx-explorer_crx.war
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.
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.
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.
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.
Nachdem der oben genannte Migrationsprozess verifiziert wurde, kann Folgendes gelöscht werden:
crx-quickstart/repository/shared/repository/datastore
CRX1.3.x, CRX1.4.x, CRX2.x
[1] DataStore
[2] Über WebDAV auf Repository zugreifen
Bei Ihrem Konto anmelden