Question
Pour différentes raisons (par exemple pour une consolidation d'infrastructure), il peut s'avéré judicieux de migrer des données binaires existantes stockées dans un DataStore [1] vers un autre. Comment effectuer une migration ?
Réponse, résolution
Actuellement, il n’existe aucun outil disponible pour la migration DataStore. Cependant, elle peut être facilement réalisée avec l'aide d'une instance CRX temporaire montée via WebDAV [2]. L’exemple suivant indique comment migrer des fichiers binaires d’un FileDataStore vers un DbDataStore.
Remarque : cette procédure doit être testée et vérifiée sur une instance de test avant l'application sur une instance de production.
Préparez une instance CRX temporaire
La première étape consiste à configurer une deuxième instance CRX temporaire unique avec une banque de données basée sur DB (DbDataStore) configurée :
- Copiez
crx-xxx-quickstart.jar
etlicense.properties
à un emplacement temporaire, par exemple/tmp/crx_dbdatastore
- Exécutez la commande de décompression :
Jar java- crx-xxx-quickstart.jar -unpack
- Une fois terminé, accédez au répertoire décompressé
crx-quickstart/server/webapps
- Décompressez l'application web CRX dans le répertoire de
crx-explorer_crx
:unzip -d crx-explorer_crx crx-explorer_crx.war
- Supprimer
crx-explorer_crx.war
- Modifiez le fichier
repository.xml
La configuration DataStore doit être adaptée à l’implémentation de DbDataStore, par exemple :
<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>
Une fois ceci terminé :
- copiez la bibliothèque contenant un pilote de base de données spécifique à
crx-explorer_crx/WEB-INF/lib
- renommez le répertoire
crx-explorer_crx
decrx-explorer_crx.war
- Démarrez cette instance CRX
Au cours de l’installation, CRX créera un certain nombre de fichiers binaires dans le référentiel qui doivent être stockés dans la base de données configurée. Vérifiez qu’il fonctionne correctement.
Montez une instance CRX temporaire avec WebDAV
L'étape suivante consiste à installer l'instance CRX temporaire via WebDAV [2] sur le serveur hébergeant l'instance CRX actuelle. Dans cet exemple, le point de montage WebDAV /tmp/crxwebdav
est utilisé.
Copiez des fichiers de FS vers une instance temporaire via WebDAV
Le FileDataStore conserve des fichiers binaires par défaut dans <crx_home>/crx-quickstart/repository/shared/repository/datastore
en utilisant le hachage du contenu d'un fichier en tant que nom de fichier. Copier ceci sur le CRX temporaire avec DbDataStore configuré créera les mêmes binaires avec les mêmes codes de hachage et pourra donc être réutilisé plus tard.
Copiez régulièrement tous les fichiers et dossiers sur le point de montage WebDAV :
cd <crx_home> cp -Rv crx-quickstart/repository/shared/repository/datastore /tmp/crxwebdav
Selon le contenu binaire, cela peut prendre un certain temps. Dès que l'opération de copie récursive est terminée, vous pouvez également démonter et arrêter l'instance CRX temporaire.
Reconfigurez la Datastore du CRX
L'étape suivante consiste à modifier la configuration DataStore de l'instance CRX actuelle (repository.xml
) pour utiliser la même configuration DbDataStore que l'instance temporaire. Une fois terminé, démarrez l’instance CRX et vérifiez que les fichiers binaires soient disponibles comme avant.
Nettoyer
Une fois la procédure de migration ci-dessus vérifiée, les éléments suivants peuvent être supprimés :
- FileDataStore:
crx-quickstart/repository/shared/repository/datastore
- Instance CRX temporaire
Application
CRX1.3.x, CRX1.4.x, CRX2.x
[1] DataStore
[2] Comment accéder au référentiel via WebDAV
Adobe
Recevez de l’aide plus rapidement et plus facilement
Nouvel utilisateur ?