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 et license.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 de crx-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

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne