Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
« Maintenance Remonter une sauvegarde » : différence entre les versions
m →PostgreSQL : table du METS |
m a déplacé Doc/Remonter une sauvegarde vers Maintenance Remonter une sauvegarde |
(Aucune différence)
| |
Dernière version du 24 avril 2013 à 10:19
Prévenir le client
[modifier | modifier le wikicode]On les préviens que l'on travaille sur l'application avant de commencer
Passer l'application en mode maintenance
[modifier | modifier le wikicode]Préparer l'hôte virtuel Apache
[modifier | modifier le wikicode]# activation des hôtes virtuels
NameVirtualHost *:80
<VirtualHost *:80>
# comment/un-comment this line to disable/enable maintenance mode
ServerName MON_PROJET.fr
## Maintenance ##
RewriteEngine On
Alias /maintenance.html /home/adminpleade/apps/maintenance/maintenance.html
Alias /MON_PROJET-logotype.png /home/adminpleade/apps/maintenance/MON_PROJET-logotype.png
RewriteCond %{REQUEST_URI} !maintenance.html
RewriteCond %{REQUEST_URI} !MON_PROJET-logotype.png
# Access de test pour AJLSM
# RewriteCond %{REMOTE_ADDR} !82.225.177.85
RewriteRule ^/(.*) /home/adminpleade/apps/maintenance/maintenance.html [L]
RewriteRule ^/MON_PROJET-logotype.png /home/adminpleade/apps/maintenance/MON_PROJET-logotype.png [L]
ProxyPass / ajp://localhost:8009/MON_PROJET/
ProxyPassReverse / ajp://localhost:8009/MON_PROJET/
ErrorLog /home/adminpleade/apps/maintenance/error.log
CustomLog /home/adminpleade/apps/maintenance/access.log combined
</VirtualHost>
Basculer en mode maintenance
[modifier | modifier le wikicode]On désactive l'hôte virtuel Apache de notre application pour mettre celui de maintenance à la place.
cd /etc/httpd/conf.d
mv 0pleade.conf 0pleade.conf.bak
mv maintenance.conf.bak maintenance.conf
Vérifications préalables
[modifier | modifier le wikicode]Redémarrer Tomcat
[modifier | modifier le wikicode]On vérifiera que l'instance de Apache Tomcat c'est bien arrêté et à redémarrer sans problème.
En cas de doute, on tuera complètement le processus de tomcat, car il s'est avéré que certain problèmes étaient dû à des instances serveurs zombie :
tomcatPid2Kill=$(ps aux | grep tomcat | grep java | awk '{print $2}')
kill $tomcatPid2Kill
Redémarrer PostgreSQL
[modifier | modifier le wikicode]Il se peut que le serveur ce soit arrêté si le serveur physique est redémarrer et qu'aucun service ne relance postgreSQL. Si c'est le cas, on relancera le serveur de la façon suivante :
/etc/init.d/postgresql restart
Identifier la dernière configuration stable
[modifier | modifier le wikicode]On analysera les journaux de publications pour trouvé d'éventuelles problèmes, signalé par une ERROR_MESSAGES non-vide
grep ERROR_MESSAGES "$AJLSM_HOME/logs/$PROJECT-front/publication-"*.log
Vider les données actuelles
[modifier | modifier le wikicode]PostgreSQL
[modifier | modifier le wikicode]Depuis un utilisateur root on bascule sur l'utilisateur postgres pour accéder aux bases de données :
su - postgres
Une fois identifier en tant que postgres, on se connecte à la base pour la vider et remonter un dump :
psql -d "${PROJECT}_front" -U app_front
On est maintenant connecter à la base "$PROJECT_front" comme l'indique le prompt : $PROJECT_front=>. On vide maintenant toutes les tables avec un DROP TABLE :
DROP TABLE module_eadeac_eac, module_eadeac_eac_docs;
DROP TABLE module_eadeac_ead;
DROP TABLE module_eadeac_ead_docs;
DROP TABLE module_eadeac_ead_oai;
DROP TABLE module_eadeac_mets, module_eadeac_mets_docs;
Données SDX
[modifier | modifier le wikicode]Dans un autre terminal, on supprimera les données du dossier SDX : "$AJLSM_HOME/sdx-data/$PROJECT-front/"
rm "$AJLSM_HOME/sdx-data/$PROJECT-front"*/ -ri
Extraction des backups
[modifier | modifier le wikicode]On bascule sur l'utilisateur gérant les sauvegardes, généralement c'est backupAgent. On choisi la date de la sauvegarde à restaurer :
# par exemple
restoreDateTime="2012-06-23_00h00"
Et on extrait successivement :
La sauvegarde globale
[modifier | modifier le wikicode]Le méta paquet de la sauvegarde, "$restoreDateTime-$PROJECT-meta.tar" :
tar xf ./"$restoreDateTime-$PROJECT-front-meta.tar"
Le sdx-data
[modifier | modifier le wikicode]Les données d'indexation en système de fichier, "$restoreDateTime-$PROJECT-front-sdx-data.tar.gz.tar" :
tar xvzf "$restoreDateTime-$PROJECT-front-sdx-data.tar.gz"
La base de donnée
[modifier | modifier le wikicode]Les données d'indexation en base de donnée, "$restoreDateTime-$PROJECT-front-sql.sql.gz" :
gunzip -c "$restoreDateTime-$PROJECT-front-sql.sql.gz" > "$restoreDateTime-$PROJECT-front-sql.sql"
Attention aux droits
[modifier | modifier le wikicode]Les fichiers ont les droits de l'utilisateur responsable des sauvegarde, donc de backupAgent. Hors il faut que c'est fichiers soient accessible à l'application Pleade et donc à son utilisateur (ajlsm). Il faut donc changer les droits de ses fichiers :
su -
restoreDateTime="2012-06-23_00h00"
cd /home/backupAgent/backups/home/backupAgent/tmp/
chown adminpleade:ajlsm -R \
"$restoreDateTime-$PROJECT-front-sql.sql" \
./"home/" # extracted SDX data, relative to current directory
Restauration des données en système de fichiers
[modifier | modifier le wikicode]Toujours depuis un utilisateur root, car on travaille entre plusieurs utilisateur.
mv home/adminpleade/sdx-data/upmc-front/ /home/adminpleade/sdx-data
Restauration des données dans PostgreSQL
[modifier | modifier le wikicode]Remarques : Si besoin on consultera la documentation relative à PostgreSQL pour connaître les commandes essentielles.
L'opération peut prendre plusieurs minute, pour éviter d'avoir à extraire la base de donnée à la main, on pourra restaurer directement à partir du fichier .gz. avec la commande suivante :
time $(gunzip -c "$restoreDateTime-$PROJECT-front-sql.sql.gz" | psql "${PROJECT}_front" -U app_front)
On obtient quelques erreurs qui ne sont pas bloquante :
SET
SET
SET
SET
ERREUR: l'index « module_eadeac_ead_propertyvalue_idx » n'existe pas
ERREUR: l'index « module_eadeac_ead_propertyname_idx » n'existe pas
ERREUR: l'index « module_eadeac_ead_oai_propertyvalue_idx » n'existe pas
ERREUR: l'index « module_eadeac_ead_oai_propertyname_idx » n'existe pas
ERREUR: l'index « module_eadeac_ead_oai_id_idx » n'existe pas
ERREUR: l'index « module_eadeac_ead_id_idx » n'existe pas
ERREUR: l'index « module_eadeac_eac_propertyvalue_idx » n'existe pas
ERREUR: l'index « module_eadeac_eac_propertyname_idx » n'existe pas
ERREUR: l'index « module_eadeac_eac_id_idx » n'existe pas
ERREUR: la relation « public.module_eadeac_ead » n'existe pas
ERREUR: la relation « public.module_eadeac_ead_oai » n'existe pas
ERREUR: la relation « public.module_eadeac_ead_docs » n'existe pas
ERREUR: la relation « public.module_eadeac_eac » n'existe pas
ERREUR: la relation « public.module_eadeac_eac_docs » n'existe pas
ERREUR: la table « module_eadeac_ead_oai » n'existe pas
ERREUR: la table « module_eadeac_ead_docs » n'existe pas
ERREUR: la table « module_eadeac_ead » n'existe pas
ERREUR: la table « module_eadeac_eac_docs » n'existe pas
ERREUR: la table « module_eadeac_eac » n'existe pas
ERREUR: doit être le propriétaire du schéma public
ERREUR: le schéma « public » existe déjà
ALTER SCHEMA
ERREUR: doit être le propriétaire du schéma public
SET
SET
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
setval
--------
1
(1 row)
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
CREATE TABLE
ALTER TABLE
setval
--------
1
(1 row)
setval
---------
3384771
(1 row)
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
CREATE INDEX
ATTENTION: aucun privilège n'a pu être révoqué
REVOKE
ATTENTION: aucun privilège n'a pu être révoqué
REVOKE
ATTENTION: aucun privilège n'a été accordé
GRANT
ATTENTION: aucun privilège n'a été accordé
GRANT
La commande dure environ :
real 13m48.002s
user 3m8.363s
sys 0m21.308s
Redémarrage de Tomcat
[modifier | modifier le wikicode]Pour que le nouvel environnement soit bien pris en compte, on redémarrera le serveur Tomcat :
flushAndRestart front
Restaurer le mode production
[modifier | modifier le wikicode]cd /etc/httpd/conf.d
mv 0pleade.conf.bak 0pleade.conf
mv maintenance.conf maintenance.conf.bak