Troisième et dernier article sur le sujet des tests d’upgrade Alfresco avec une très grosse volumétrie sur disque.

Dans le premier article nous avons vu comment - avec un simple montage NFS - il était possible de monter un serveur de test contenant toutes les données de production, sans dupliquer les ressources matérielles.

Dans le second nous avons vu comment monter un serveur Alfresco - partiellement fonctionnel - en utilisant uniquement une sauvegarde de la base de données. J’utilise principalement cette technique après un crash, pour valider une base de données suspectée d’être corrompue.

Solution 3 : créer un “Content Store” partiel

La solution que je propose aujourd’hui est proche de la précédente, puisque nous allons générer une partie du Content Store. Cependant, pour permettre à Share de fonctionner, je vais reprendre l’ensemble des petits fichiers.

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

Mais contrairement à la solution précédente, nous n’utiliserons pas la base de données pour générer le Content Store. En contre partie nous allons effectuer un backup partiel du Content Store du serveur de production.

Manipulation

Sur le serveur de production

En plus de la sauvegarde de la base de données, nous avons besoin de manipuler le Content Store. Nous allons créer un backup des petits fichiers du Content Store. Le but est de récupérer les fichiers de configuration de Share, le contenu du Dictionnaire de Données, et quelques petites images.

Pour réaliser cet article, j’utilise un petit jeu de donnés, contenant quelques milliers de fichiers pour 34G d’espace disque utilisé pour le Content Store:

Nombre de fichiers et volume sur disque :

$ find /srv/alf_data/contentstore/ -type f | wc -l
6383

$ du -sh /srv/alf_data/contentstore/   
34G	/srv/alf_data/contentstore/

Commençons par effectuer une sauvegarde de la structure du Content Store :

$ cd /srv/alf_data/contentstore
$ find . -type d > ~/contentstore_listdir
$ find . -type f > ~/contentstore_listfiles

Puis on archive les petits fichiers (inférieur à 100ko). Ce qui englobe normalement tous les fichiers de configuration (xml, json), ainsi que les petites images (thumbnails)

$ cd /srv/alf_data/contentstore
$ find . -type f -size -100k  -print0 | tar -czvf \
  ~/backup_partial_contentstore.tar.gz -T - --null

Enfin on copie ces trois fichiers sur notre serveur de test.

Sur le serveur de test

Sur notre serveur de test, j’ai dans le répertoire personnel mes trois fichiers

  • contentstore_listdir
  • contentstore_listfiles
  • backup_partial_contentstore.tar.gz

Dans un premier temps on reconstruit la structure du Content Store sans les fichiers :

$ cd /srv/alf_data/contentstore
$ for dir in $(cat ~/contentstore_listdir)
do
    mkdir $dir
done

Ensuite on génère les fichiers vides :

$ cd /srv/alf_data/contentstore
$ for file in $(cat ~/contentstore_listfiles)
do
   touch $file
done

Puis on restaure notre backup partiel.

$ cd /srv/alf_data/contentstore
$ tar xzvf ~/backup_partial_contentstore.tar.gz

Notre Content Store est très petit.

$ du -sh /srv/alf_data/contentstore/   
122M /srv/alf_data/contentstore/

Enfin on rétablit les droits sur les fichiers :

$ sudo chown tomcat6 -R $ cd /srv/alf_data/contentstore

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. Normalement il ne doit pas remonter d’erreur, mais au cas où je demande à Alfresco de forcer le démarrage.

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

Vous voila en présence d’un serveur Alfresco parfaitement fonctionnel, seulement si vous téléchargez des fichiers ils seront vides.