I. Introduction

I-A. Objectifs

Il est nécessaire de sauvegarder régulièrement le travail effectué pour pouvoir retrouver rapidement et simplement son environnement de travail en cas de perte des données. Ce document aborde les problématiques de sauvegarde et de restauration d'un environnement de travail SAS, en terme de données (tables, index, cubes), de métadonnées (Open Metadata Architecture) et d'applicatif (programmes, projet Enterprise Guide, application AF, rapports Web Report Studio …). Il présente une certaine approche, et propose des suggestions de mise en oeuvre, sans être exhaustif. Il s'adresse à l'administrateur de l'application SAS.

I-B. Périmètre

Il s'agit de faire des sauvegardes sur une machine, et de les restaurer sur la même machine, dans le même contexte (système d'exploitation, version SAS), sans modification des éléments sauvegardés. L'analyse qui est proposée porte sur les technologies SAS®9.

Ne sont pas abordés :

  • La copie des métadonnées vers un autre environnement, avec ou sans mise à jour du contenu. Pour cela, il faut se documenter sur la promotion et la réplication, sur le site Internet du Support Clients, à l'adresse http://support.sas.com/documentation/configuration/index.html,
  • Les spécificités de chaque système d'exploitation,
  • Le choix de la machine de back-up, les logiciels de sauvegarde, les outils systèmes.

II. La sauvegarde

II-A. Quelques règles d'organisation

Pour que les opérations de sauvegardes et de restauration soient rapides et efficaces, il est impératif de respecter quelques règles d'organisation :

  • Il faut prendre en compte les horaires de travail des utilisateurs afin de s'assurer

o Que la sauvegarde ne gêne pas leur travail
o Que leur travail ne gêne pas la sauvegarde ! Par exemple, une table en cours d'édition ou un catalogue macro référencé par une bibliothèque ne peuvent pas être copiés parce qu'ils sont en cours d'utilisation.

  • Il faut prendre en compte la fréquence de mise à jour des données et des métadonnées, pour pouvoir définir la fréquence des sauvegardes.
  • Il faut dater de manière précise les sauvegardes, et signaler la version exacte de SAS (service pack inclus) utilisée lors de cette sauvegarde. Ci-contre, voici un exemple de nomination pour les répertoires hébergeant des sauvegardes trimestrielles.
Image non disponible
  • Il faut sauvegarder les informations en respectant l'architecture d'origine.
Image non disponible
  • Il faut définir également le nombre de sauvegardes à garder : il faudra purger régulièrement les sauvegardes, les plus anciennes devenant inutiles avec le temps.

II-B. Définir les besoins

Il faut lister les éléments utilisés, et décider si une sauvegarde est nécessaire. Par exemple :

  • les données : entre les données détaillées, agrégées et historisées, quelles tables faut-il sauvegarder ? les données détaillées, souvent volumineuses, doivent-elles être sauvegardées ?
  • les serveurs : l'architecture SAS®9 contient plusieurs serveurs (Métadonnées, espace de travail …). Les scripts peuvent être modifiés pour des besoins particuliers (autoexec.sas, sasv9.cfg, .bat…), aussi il est préférable de les sauvegarder.
  • les programmes
  • les projets créés via Enterprise Guide
  • les rapports créés via Web Report Studio
  • le répertoire SASUSER : chaque utilisateur dispose d'un répertoire de travail personnel. Il faut sauvegarder ce répertoire, stocké par défaut sous ~\Mes documents\My SAS Files\9.1, si les utilisateurs y stockent des tables ou des formats personnels par exemple.
  • le répertoire WORK : chaque session SAS créée un répertoire de travail temporaire, détruit à la fermeture de la session. De par sa nature, ce répertoire ne doit pas être sauvé.

II-C. La sauvegarde, étape par étape

La sauvegarde se déroule en plusieurs étapes :

  • Enregistrer la description des répertoires du projet
  • Arrêter les serveurs SAS
  • Sauvegarder les métadonnées et l'ensemble de la configuration
  • Sauvegarder les données, l'applicatif, les rapports etc
  • Redémarrer les serveurs SAS

II-C-1. Sauvegarder l'arborescence

Il est intéressant de garder une description de l'arborescence mise en place dans le cadre d'un projet. Ainsi après une restauration, l'administrateur pourra vérifier qu'il a bien reproduit le projet à l'identique.

Exemple : Création d'un fichier texte contenant l'arborescence du projet :

 
Sélectionnez

C:\Projets\Données\Detail\
C:\Projets\Données\Reference\
C:\Projets\Données\Datamart\
C:\Projets\Données\Cubes\
C:\Projets\Log\
C:\Projets\Programmes\TraitementDonnees\
C:\Projets\Programmes\Rapports\

Outre la structure, on peut envisager de garder une trace du contenu de chaque répertoire, en listant les fichiers et leur taille par exemple, au moment de la sauvegarde.

Exemple : Création d'un fichier texte contenant la description de l'arborescence et de son contenu (nom ; taille, date de dernière mise à jour) :

 
Sélectionnez

C:\Projets\Données\Detail\Reel040101.sas7bdat, 5.8 M, 040105
C:\Projets\Données\Detail\Budget040101.sas7bdat, 2.5 M, 040105
C:\Projets\Données\Detail\Saisies040101.sas7bdat, 0.8 M, 040105
C:\Projets\Données\Detail\Reel040201.sas7bdat, 5 M, 040203
C:\Projets\Données\Detail\Budget040201.sas7bdat, 2.5 M, 040203
C:\Projets\Données\Detail\Saisies040201.sas7bdat, 0.6 M, 040203

II-C-2. Sauvegarder la configuration

II-C-2-a. Arrêt des services SAS

Avant de démarrer la sauvegarde, il est nécessaire de stopper les services SAS, comme l'Object Spawner et le serveur de métadonnées par exemple. Il y a plusieurs manières de stopper les serveurs :

  • en utilisant le script prévu à cet effet :

%rootDir%\Lev1\SASMain\ObjectSpawner\ObjectSpawner.bat stop
%rootDir%\Lev1\SASMain\MetadataServer\MetadataServer.bat stop

où %rootDir% est le répertoire de la configuration. En fonction de l'architecture mise en place, il est possible qu'il y ait d'autres services à stopper (comme le serveur OLAP par exemple).

  • En utilisant la procédure METAOPERATE
 
Sélectionnez

PROC METAOPERATE
SERVER="'localhost'"
PORT=8561
USERID="sasadm"
PASSWORD="MonMotDePasse'
PROTOCOL=BRIDGE
ACTION=STOP;
RUN;
  • Depuis la SAS® Management Console :
Image non disponible

Si le serveur de métadonnées est stoppé, alors les autres serveurs seront également stoppés.

II-C-2-b. Sauvegarde

Après avoir arrêté les serveurs, la sauvegarde de la configuration consiste à recopier le répertoire ~\RépertoireConfiguration\Lev1\SASMain\ :

  • La définition des serveurs, des bibliothèques, des utilisateurs, ainsi que le travail effectué sous ETL Studio (custom tree, jobs etc), sont stockés dans le répertoire ~\RépertoireConfiguration\Lev1\SASMain\MetadataServer\MetadataRepositories\Foundation, aussi il est primordial de le sauvegarder.
  • Les autres répertoires doivent être sauvés si :

- Les scripts d'exécution ont été modifiés (ajout d'option par exemple)
- Vous souhaitez archiver les logs des différents serveurs.

Cette copie peut être compressée.

II-C-3. Suite de la sauvegarde

Il s'agit de recopier l'ensemble des répertoires concernés, en sauvegardant les informations « répertoire » : - sous Unix, il faut bien conserver la même arborescence - sous Windows, dans un fichier compressé, il est nécessaire de conserver le chemin pour chaque fichier (option « Sauver infos répertoire » dans Winzip par exemple).

édition : la copie des données serait interrompue. Pour ce faire: - si vous utilisez un serveur de métadonnées, cela sous-entend que les utilisateurs accèdent aux données via un LIBNAME META. Le serveur ayant été stoppé, il n'y a donc pas d'accès aux données. - Si vous n'utilisez pas de serveur de métadonnées, mais que vous travaillez en mode client / serveur, alors il faut s'assurer qu'il n'y a plus de processus sas.exe en cours d'exécution.

II-C-4. Redémarrage des serveurs SAS

Il faut redémarrer les serveurs de métadonnées, l'Object Spawner etc, en utilisant le script prévu à cet effet :
> %rootDir%\Lev1\SASMain\ObjectSpawner\ObjectSpawner.bat start
> %rootDir%\Lev1\SASMain\MetadataServer\MetadataServer.bat start
ou en démarrant le service manuellement. Ni la procédure METAOPERATE, ni la SAS® Management Console ne permettent de démarrer un serveur de métadonnées.

II-D. Cas particulier : sauvegarder uniquement le serveur de métadonnées

II-D-1. Présentation de %OMABAKUP

Les métadonnées peuvent être sauvegardées en utilisant le macro-programme %OMABAKUP, disponible dans la bibliothèque autocall de SAS. Ce programme doit être exécuté sur la machine hébergeant les métadonnées, via une session SAS, ouverte manuellement ou en mode batch, avec le userid démarrant les services. Un journal est créé et contient les messages générés au cours de l'exécution, NOTE, WARNING et ERROR compris.

Le programme est exécuté en fonction de certaines options SAS définissant l'accès au serveur de métadonnées (METASERVER, METAPORT etc), et de 3 paramètres :
- DestinationPath : le chemin physique absolu du répertoire hébergeant la sauvegarde,
- ServerStartPath : le chemin physique absolu du répertoire où démarre le serveur,
- RposmgrPath : le chemin physique relatif du répertoire hébergeant le référentiel.

Le macro-programme %OMABAKUP contient 3 étapes :

  • Arrêter le serveur de métadonnées désigné
  • Copier les métadonnées (commandes du système d'exploitation, cp ou xcopy par exemple), à savoir :

~\RépertoireConfiguration\Lev1\SASMain\MetadataServer\MetadataRepositories\Foundation\
~\RépertoireConfiguration\Lev1\SASMain\MetadataServer\rposmgr\
Cette copie n'est pas compressée.

  • Redémarrer le serveur de métadonnées


Le référentiel Base (ou « Foundation ») ainsi que les éventuels référentiels projet (« project ») et personnalisés (« custom ») sont sauvés.

De plus, l'option REORG permet d'optimiser le serveur de métadonnées et sa sauvegarde, en libérant l'espace disque utilisé par les objets n'existant plus.

%OMABAKUP est disponible pour Windows, Unix et z/OS.

Cette méthode est détaillée dans le document “SAS® 9.1.3 Metadata Server: Setup and Administration Guide”, à la page http://support.sas.com/rnd/eai/openmeta/v9/setup/backup.html.

II-D-2. Exemple d'utilisation

Voici un exemple d'utilisation de la macro %omabakup. Ici, les métadonnées sont stockées en local, et sont accessibles via le port 8561 en utilisant le protocole SAS® Bridge. L'identifiant de l'utilisateur administrateur, son mot de passe ainsi que le nom du référentiel principal sont également précisés.

 
Sélectionnez

OPTIONS
metaserver='localhost'
metaport=8561
metaprotocol=bridge
metauser='sasadm'
metapass='MonMotDePasse'
metarepository='Foundation';
%omabakup (
DestinationPath="C:\SAS\Lev1\SASBackup\Backup_20041201_SAS91TS1M3",
ServerStartPath="C:\SAS\Lev1\SASMain",
RposmgrPath="MetadataServer\rposmgr" ) ;

Ce programme peut être soumis manuellement depuis une session SAS, ou bien en batch.

III. La restauration

III-A. La configuration

Il y a 2 cas de figure :
- la configuration existe : le répertoire contenant LEV1 existe, il faut juste restaurer son contenu.
- la configuration n'existe pas : il faut recréer les serveurs avant de restaurer le contenu des répertoires.

III-A-1. Cas 1 : le répertoire de configuration existe

1. Arrêter le serveur de métadonnées
2. Recopier ou décompresser les répertoires suivants de la sauvegarde vers les répertoires de la configuration :
- ~\RépertoireConfig\Lev1\SASMain\MetadataServer\MetadataRepositories\Foundation\
- Si les scripts de démarrage des autres serveurs avaient été modifiés, alors il faut soit restaurer les scripts sauvés, soit mettre à jour les nouveaux scripts
3. Vider le dossier ~\ RépertoireConfig\Lev1\SASMain\MetadataServer\rposmgr\
4. Redémarrer le serveur de métadonnées.

III-A-2. Cas 2 : le répertoire de configuration n'existe pas

1. A partir du CD « SAS Configuration Wizard », re-créer les serveurs (métadonnées, object spawner, workspace server etc). Le chemin physique peut être modifié.
2. Ensuite, suivre les instructions du fichier Instructions.html créé à l'étape 1
3. Puis copier ou décompresser les répertoires suivants de la sauvegarde vers les répertoires de la nouvelle configuration :
- ~\RépertoireConfig\Lev1\SASMain\MetadataServer\MetadataRepositories\Foundation\
- Si les scripts de démarrage des autres serveurs avaient été modifiés, alors il faut soit restaurer les scripts sauvés, soit mettre à jour les nouveaux scripts
4. Vider le dossier ~\ RépertoireConfig\Lev1\SASMain\MetadataServer\rposmgr\
5. Démarrer le serveur de métadonnées.

III-B. Suite de la restauration

Il faut recopier l'ensemble de la sauvegarde vers les répertoires d'origine.

La date de sauvegarde des données doit être la même que pour les métadonnées par soucis de cohérence.
Vous pouvez contrôler la structure physique des tables depuis ETL Studio, en utilisant la fonctionnalité « Afficher les statistiques » (ou « View statistics »). Cela permet de voir la structure physique de la table (il s'agit du résultat de la procédure CONTENTS pour la table choisie). A ce jour, il n'y a pas d'outil permettant de mettre en avant les différences entre la définition dans les métadonnées et la structure réelle d'une table : cette étape de vérification doit être faites manuellement. Il serait d'ailleurs envisageable d'écrire un programme comparant les métadonnées (récupérées via des requêtes XML) et la table physique (récupérée via la procédure CONTENTS). Si vous constatez une différence entre les variables définies dans les métadonnées, et les tables physiques, alors vous pouvez utilisez la fonctionnalité « Update Metadata » d'ETL Studio. Elle vous permet de modifier les métadonnées en fonction de la structure physique d'une table. Par exemple, si une variable n'existe pas dans la table physique, alors elle est supprimée de la définition de la table. Depuis l'onglet inventaire ou personnalisé, faire un clic droit sur la table et sélectionner « Mettre à jour les métadonnées de la table » (ou « Update Metadata »). La modification sera effective de suite.

IV. Etude de cas

Ce paragraphe présente différents cas de perte de données, et les actions à mener pour la restauration.

IV-A. Suppression d'un job depuis ETL Studio

Scénario : Par mégarde, un utilisateur a supprimé une tâche dans ETL Studio. Il souhaite que ce job soit restauré.

Actions :
- Si le job avait été exporté dans un fichier XML, il faut importer ce fichier XML. Dans ETL, sélectionner Tools > Job import and merge wizard.
- Si le job avait été déployé pour être ordonnancé, alors un programme .SAS existe. Vous pouvez alors créer un nouveau job, qui contiendra un processus « User written code », pointant vers ce programme.
- Si les métadonnées n'ont pas été modifiées depuis la dernière sauvegarde, vous pouvez envisager de restaurer les métadonnées. Mais il est indispensable de s'assurer qu'il n'y aura aucune perte d'information : d'autres jobs peuvent être affectés, ou des attributs de tables peuvent être modifiés par ce retour en arrière.

IV-B. Suppression d'une table

Scénario : Votre serveur de métadonnées référence une bibliothèque contenant plusieurs tables. Accidentellement, une table est physiquement supprimée.

Actions :
Il suffit de restaurer la table. C'est sans conséquence pour les métadonnées. En effet, elle référence les attributs des tables, sans vérifier leur existence, aussi la table peut-être utilisée (création de jobs par exemple) même si elle n'existe plus physiquement. En revanche, l'exécution de programme la référençant, ou la consultation des données par exemple affichera tout naturellement une erreur.

Si la structure de la table a évolué depuis cette sauvegarde, et que les métadonnées référencent la nouvelle structure, vous pouvez mettre à jour les métadonnées depuis ETL Studio. Pour cela, depuis l'onglet « Inventaire » ou « Personnalisé », faites un clic droit sur la table, et sélectionnez « Update metadata ».

IV-C. Perte des métadonnées

Scénario : Suite à des problèmes sur le serveur hébergeant votre serveur de métadonnées, ces dernières sont corrompues. Vous souhaitez restaurer votre sauvegarde.

Actions :
Dans un premier temps, vous pouvez restaurer la dernière sauvegarde en date en recopiant les répertoires « Foundation », et en vidant le contenu de « rposmgr » comme décrit précédemment.

Si le problème persiste, il est préférable de remplacer complètement la configuration actuelle, en créant une nouvelle configuration qui contiendra une restauration.
1. Désinstaller les éventuels services installés, comme le serveur de métadonnées par exemple. > %rootDir%\Lev1\SASMain\MetadataServer\MetadataServer.bat -remove
2. Par mesure de sécurité, sauvegarder le répertoire ~\RépertoireConfiguration\Lev1\SASMain\ actuel.
3. Exécuter ~\RépertoireDeConfiguration\UninstallerData\Uninstall SAS Configuration Wizard.exe
4. Créer une configuration.
5. Restaurer les copies des données et de l'application.

Il faut s'assurer que les métadonnées sont cohérentes avec les données. Si certaines tables ont évoluées, depuis cette sauvegarde, vous pouvez mettre à jour les métadonnées depuis ETL Studio. Pour cela, depuis l'onglet « Inventaire » ou « Personnalisé », faites un clic droit sur la table, et sélectionnez « Update metadata ».

IV-D. Perte de l'ensemble de l'environnement SAS

Scénario : Un serveur Windows 2000 héberge l'ensemble de votre projet (données, applicatif, métadonnées…). Suite à un crash de cette machine, vous souhaitez restaurer vos sauvegardes sur une nouvelle machine Windows 2000.

Actions :
1. Installer les composants SAS : Foundation, SMC etc.
2. Créer une configuration en utilisant le média SAS Configuration Wizard.
3. Restaurer les copies des métadonnées, des données et des autres éléments.

Conclusion

une organisation solide et une bonne compréhension de l'architecture SAS. La collaboration de l'administrateur des métadonnées et de l'administrateur des serveurs concernés est donc primordiale. Lors de changement de version de SAS, il est envisageable que SAS fournisse des outils spécifiques, à l'instar de la macro omabackup par exemple. Il est donc important de se documenter sur le site Custom Support Center, à l'adresse http://support.sas.com .

Réferences et liens utiles