cancel
Showing results for 
Search instead for 
Did you mean: 

Backup/Restore Alfresco 4.0c avec PostgreSQL sous Windows

fifisteph
Champ in-the-making
Champ in-the-making
Bonjour,

Après avoir utilisé la version 3.4 avec MySQL pendant quelques temps, j'ai tenté l'évolution vers la 4.0c et j'en ai profité pour passer sous PostgreSQL pour tester (Réinstallation complète).

J'utilise un script perso de backup/restore.
Le backup à chaud se passe sans encombre et je réalise un dump qui semble cohérent à partir de cette commande:
pg_dump -U alfresco alfresco > E:\sauvegarde\postgresql\alfresco_hot.sql

Le problème est au niveau de la restauration de ce backup qui m'affiche un grand nombre d'erreurs donc la première étant :
psql –set ON_ERROR_STOP=on -U alfresco alfresco < E:\sauvegarde\postgresql\alfresco_hot.sql
Résultat :
SET
SET
SET
SET
SET
SET
ERREUR:  doit être le propriétaire du langage plpgsql

Cette erreur semble correspondre à cette ligne de mon backup:
CREATE OR REPLACE PROCEDURAL LANGUAGE plpgsql;
ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO "SYSTEM";

J'ai essayé pas mal de choses mais je ne parviens pas à obtenir un restore correct. J'avais tenté de supprimer la BD alfresco pour repartir de zéro, proprement…mais si le user alfresco peut bien supprimer la BD, il lui est impossible de la recréer. Pas simple…
Sous Windows, je n'ai pas trouvé le moyen d'utiliser le superuser postgres, car pas de password associé. Donc impossible de recréer une BD.

Edit: pour le password postgres c'est OK…c'est le même que pour le user alfresco.

Tout aide serait la bienvenue.
Merci
1 REPLY 1

fifisteph
Champ in-the-making
Champ in-the-making
J'ai finalement trouvé une solution de contournement.

M'inspirant d'autres scripts j'ai réalisé ceux-ci qui semblent fonctionnels car j'ai pu retrouver tous les documents/sites d'un précédent backup, après une installation toute neuve d'Alfresco.
*Pour rappel : Windows, Alfresco 4.0c et PostgreSQL
**Pour ne pas avoir à entrer les mots de passe de postgres et alfresco, j'ai créé un fichier pgpass.conf dans %APPDATA%\Postgresql\

backup
echo off
echo.
echo ################################
echo ### DUMP Postgresql Alfresco ###
echo ################################
echo.

pg_dump -U alfresco alfresco > E:\sauvegarde\postgresql\alfresco_hot.sql

echo.
echo ############################################
echo ###     Sauvegarde Alfresco alf_data     ###
echo ############################################
echo.

robocopy E:\alfresco4\alf_data\contentstore\ E:\sauvegarde\dir.root\contentstore\ /mir /r:1 /w:1 > E:\sauvegarde\backup_hot.log
robocopy E:\alfresco4\alf_data\contentstore.deleted\ E:\sauvegarde\dir.root\contentstore.deleted\ /mir /r:1 /w:1 >> E:\sauvegarde\backup_hot.log
robocopy E:\alfresco4\alf_data\solr\ E:\sauvegarde\dir.root\solr\ /mir /r:1 /w:1 >> E:\sauvegarde\backup_hot.log
robocopy E:\Alfresco4\alf_data\postgresql\ E:\sauvegarde\dir.root\postgresql\ /mir /r:1 /w:1 >> E:\sauvegarde\backup_hot.log
robocopy E:\Alfresco4\alf_data\keystore\ E:\sauvegarde\dir.root\keystore\ /mir /r:1 /w:1 >> E:\sauvegarde\backup_hot.log

echo.
echo ####################################
echo ### Sauvegarde a chaud terminee. ###
echo ####################################

Restore
@echo off
set log=E:\sauvegarde\update.log
date /t > %log% & time /t >> %log%

echo.
echo ########################################################
echo ###        L INSTANCE POSTGRESQL DOIT ETRE UP        ###
echo ###         L INSTANCE TOMCAT DOIT ETRE DOWN         ###
echo ########################################################
echo.
:pause
pause
tasklist | findstr -i tomcat6.exe
if %ERRORLEVEL%==0 goto pause
goto next
:next
echo ### TOMCAT DOWN - ON CONTINUE 🙂 ###

echo.
echo ### RESTAURATION DU CONTENU Alfresco ###
echo.
robocopy E:\alfresco4\alf_data\ E:\sauvegarde\alf_data\ /mir /r:1 /w:1 >> %log%
rd E:\Alfresco4\alf_data\contentstore\ /s /q >> %log%
rd E:\Alfresco4\alf_data\contentstore.deleted\ /s /q >> %log%
rd E:\Alfresco4\alf_data\solr\ /s /q >> %log%
rd E:\Alfresco4\alf_data\keystore\ /s /q >> %log%
robocopy E:\sauvegarde\dir.root\ E:\alfresco4\alf_data\ /mir /r:1 /w:1 >> %log%

echo.
echo ### RESTAURATION DB postgresql ###
echo.
psql -U postgres -c "drop database alfresco;"
psql -U postgres -c "create database alfresco;"
psql -U postgres -c "grant all privileges on database alfresco to alfresco;"
psql -U alfresco alfresco < E:\sauvegarde\postgresql\alfresco_hot.sql

date /t >> %log% & time /t >> %log%

Ce n'est pas parce que ça fonctionne au premier abord que c'est forcément fonctionnel ou propre. Je suis preneur de toute amélioration/optimisation.