Domanda
A causa di vari motivi (ad esempio, il consolidamento dell'infrastruttura), potrebbe avere senso migrare i dati binari esistenti memorizzati in un DataStore [1] in un altro. Come si può effettuare una migrazione di questo tipo?
Risposta, Risoluzione
Attualmente, non esiste uno strumento disponibile che esegue una migrazione di questo tipo di DataStore. Tuttavia, con l'aiuto di un'istanza CRX temporanea montata via WebDAV [2], questo si può ottenere facilmente. L'esempio seguente mostra come migrare i file binari da un FileDataStore a un DbDataStore.
Attenzione: questa procedura dovrebbe essere testata e convalidata su un'istanza di prova prima di essere applicata a un'istanza di produzione!
Prepara un'istanza CRX temporanea
Il primo passo è quello di impostare una seconda istanza CRX temporanea vuota con un datastore basato su DB (DbDataStore) configurato:
- copia il
crx-xxx-quickstart.jar
elicense.properties
in una posizione temporanea, ad esempio/tmp/crx_dbdatastore
- esegui il comando di estrazione:
java -jar crx-xxx-quickstart.jar -unpack
- una volta terminato, vai alla directory decompattata
crx-quickstart/server/webapps
- estrai il CRX-webapp nella directory
crx-explorer_crx
:unzip -d crx-explorer_crx crx-explorer_crx.war
- elimina
crx-explorer_crx.war
- modifica
archivio.xml
La configurazione del DataStore deve essere adattata per utilizzare l'implementazione di DbDataStore, ad es:
<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>
Una volta fatto questo:
- copia la libreria contenente il driver specifico del database su
crx-explorer_crx/WEB-INF/lib
- rinomina la directory
crx-explorer_crx
incrx-explorer_crx.war
- avvia questa istanza di CRX
Durante l'installazione, CRX creerà un certo numero di file binari nell'archivio che dovrebbero essere memorizzati nel database configurato. Verifica che questo funzioni correttamente.
Monta l'istanza CRX temporanea con WebDAV
Il passaggio successivo è montare l'istanza CRX temporanea tramite WebDAV [2] sul server che ospita l'istanza CRX corrente. In questo esempio, viene utilizzato il punto di montaggio WebDAV /tmp/crxwebdav
.
Copia i file da FS ad un'istanza temporanea tramite WebDAV
Il FileDataStore persiste i file binari automaticamente in <crx_home>/crx-quickstart/repository/shared/repository/datastore
, usando l'hash del contenuto di un file come nome del file. Copiare questo nel CRX temporaneo con DbDataStore configurato creerà gli stessi binari con gli stessi codici hash, quindi può essere riutilizzato in un passo successivo.
Copia tutti i file e le cartelle in modo ricorsivo nel punto di montaggio di WebDAV:
cd <crx_home> cp -Rv crx-quickstart/repository/shared/repository/datastore /tmp/crxwebdav
A seconda della quantità di contenuto binario, questo può richiedere del tempo. Non appena l'operazione di copia ricorsiva è terminata, è possibile smontare e interrompere anche l'istanza CRX temporanea.
Riconfigura DataStore di CRX
Il passaggio successivo è quello di modificare l'attuale configurazione del DataStore dell'istanza di CRX (repository.xml
) per usare la stessa configurazione del DbDataStore come istanza temporanea. Una volta fatto questo, avvia l'istanza CRX e verifica che i binari siano disponibili come prima.
Pulizia
Una volta verificata la procedura di migrazione di cui sopra, è possibile eliminare quanto segue:
- FileDataStore:
crx-quickstart/repository/shared/repository/datastore
- istanza CRX temporanea
Prodotti interessati:
CRX1.3.x, CRX1.4.x, CRX2.x
[1] DataStore
[2] Come accedere all'archivio via WebDAV
Accedi al tuo account