Deuxième article sur le sujet des tests d’upgrade Alfresco avec une très grosse volumétrie sur disque. Dans le précédent article nous avons vu comment - avec un simple montage NFS - il était possible de monter un serveur de test contenant toute les données de production, sans dupliquer les ressources matérielles.

Solution 2 : créer un “Content Store” fantôme

Aujourd’hui nous verrons une solution pour construire un serveur de test deconnecté, contenant uniquement la base de données, donc sans les fichiers du Content Store. Pour cela nous allons générer un Content Store contenant uniquement des fantômes, c’est-à-dire des fichiers vides.

Prérequis

Pour monter notre plate forme nous avons besoin d’un serveur de test avec Alfresco. Vous pouvez utiliser une machine virtuelle préconfigurée pour gagner du temps.

Nous avons également besoin d’un backup de la base de données de production. Que nous allons charger sur notre serveur de test :

mysql -u alfresco -p alfresco < backup-alfresco-2014-04-01.sql

Manipulation

Préparation du Content Store

Dans un premier temps on extrait la liste des fichiers du Content Store en se basant sur la base SQL.

SELECT substring(content_url, 9) AS content_url
FROM alf_content_url
INTO OUTFILE '/tmp/list_file_contentstore.csv' FIELDS TERMINATED BY  ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';

Puis on génère des fichiers vides en se basant sur ce listing.

cd /srv/alf_data/contentstore
for line in $( cat /tmp/list_file_contentstore.csv );
do
    file=${line//\"/}
    sudo -u tomcat6 mkdir -p $(dirname $file)
    sudo -u tomcat6 touch $file
done;

Configuration d’Alfresco

Avant de démarrer Alfresco, je précise dans le fichier alfresco-global.properties que je souhaite effectuer un réindexation complète mais sans m’arréter en cas d’erreur, en ajoutant les deux lignes suivantes :

system.bootstrap.config_check.strict=false
index.recovery.mode=FULL

L’avantage de cette solution est qu’elle nécessite uniquement un backup de la base de données pour monter un environnement de test fonctionnel. Cependant l’application Share ne fonctionnera pas, ainsi que les règles de gestion et autres contenus stockés dans le Dictionnaire de données. Dans le prochain article je présenterai une solution alternative pour corriger ce problème.