Restauration d'une géodatabase dans PostgreSQL

Pour restaurer une base de données d'un fichier d'archive créé à l'aide de la commande pg_dump, utilisez la commande pg_restore. Veillez à tester vos modèles de sauvegarde et de récupération avec des bases de données de test.

Lorsque vous restaurez une géodatabase ou une base de données avec ST_Geometry installé, vous devez restaurer les structures selon un ordre précis : d'abord la structure publique, ensuite la structure sde, puis les structures restantes.

Consultez votre documentation PostgreSQL pour obtenir des instructions générales sur la récupération, par exemple sur les options de syntaxe. Si vous disposez de PostGIS et si vous utilisez le stockage de géométrie, lisez également attentivement la documentation PostGIS concernant la création de sauvegardes et la restauration de bases de données. Cette procédure peut varier suivant la version de PostGIS que vous utilisez.

  1. Les noms des bases de données doivent être uniques sur l'agrégat de bases de données PostgreSQL. Par conséquent, si vous restaurez dans le même agrégat de bases de données, vous devez supprimer la base de données existante.
    dropdb –U sde mypgdb
    
  2. Si vous restaurez dans un nouvel agrégat de bases de données, connectez-vous à psql, recréez le rôle de connexion sde et accordez-lui des privilèges de super-utilisateur.
    CREATE ROLE sde LOGIN 
      ENCRYPTED PASSWORD '0shallpass'
      SUPERUSER INHERIT;
    
  3. Si vous restaurez dans un nouvel agrégat de bases de données, recréez les rôles de connexion pour tous les propriétaires de données. Vous pouvez également recréer des rôles d'éditeur et de connexion en lecture seule à ce stade, mais ce n'est pas nécessaire en vue de restaurer la base de données.

    Le script d'exemple suivant crée des groupes et rôles de connexion de propriétaire de données, d'éditeur et de lecteur, puis ajoute les rôles de connexion aux groupes appropriés.

    --Re-create dataowners group and login roles.
    CREATE ROLE dataowners
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    
    CREATE ROLE owner1 LOGIN
      ENCRYPTED PASSWORD 'pw.4.owner1'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT dataowners TO owner1;
    
    CREATE ROLE owner2 LOGIN
      ENCRYPTED PASSWORD 'pw.4.owner2'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT dataowners TO owner2;
    
    --Re-create editors group and login roles.
    CREATE ROLE editors
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    
    CREATE ROLE editor1 LOGIN
      ENCRYPTED PASSWORD 'pw.4editor1'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT editors TO owner1;
    
    CREATE ROLE owner2 LOGIN
      ENCRYPTED PASSWORD 'pw.4editor2'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT editors TO editor2;
    
    --Re-create readers group and login roles.
    CREATE ROLE readers
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    
    CREATE ROLE reader1 LOGIN
      ENCRYPTED PASSWORD 'pw.4reader1'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT readers TO reader1;
    
    CREATE ROLE owner2 LOGIN
      ENCRYPTED PASSWORD 'pw.4reader2'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT readers TO reader2;
    
  4. Créez de nouveau la base de données. Vous pouvez utiliser l'instruction createdb sur la ligne de commande ou une instruction psql pour effectuer cette opération.
    RemarqueRemarque :

    Veillez à ce que la nouvelle base de données ait les mêmes propriétés que la base de données que vous allez restaurer, notamment le nom, le codage et le propriétaire.

    L'exemple suivant utilise l'outil en ligne de commande createdb pour créer une base de données nommée mypgdb avec l'encodage UTF8, détenue par le rôle de connexion sde et située dans l'espace disque tblspgdb :

    createdb –U sde –E UTF8 –D tblspgdb -O sde mypgdb
    
  5. Reconnectez-vous à psql et créez une structure sde détenue par le rôle de connexion sde dans la nouvelle base de données. Accordez l'autorisation d'utilisation sur la structure sde à tous les rôles ou groupes de connexion qui accéderont à la géodatabase.
    CREATE SCHEMA sde
      AUTHORIZATION sde;
    
    GRANTE USAGE ON SCHEMA sde TO dataowners;
    GRANTE USAGE ON SCHEMA sde TO editors;
    GRANTE USAGE ON SCHEMA sde TO readers;
    
  6. Sur la ligne de commande, restaurez la structure publique et les données à l'aide de la commande pg_restore. Exécutez la commande pour vous connecter avec des privilèges de super-utilisateur, par exemple en tant qu'utilisateur postgres ou SDE.
    AttentionAttention :

    Vous devez restaurer la structure publique et son contenu en premier. Dans le cas contraire, toutes vos données spatiales ne seront pas restaurées. Restaurez ensuite la structure sde. Si vous ne suivez pas cette étape, les index spatiaux ne sont pas recréés sur les classes d'entités.

    Par exemple, pour restaurer la structure publique d'un fichier de sauvegarde de base de données nommé mypgdb1031.dump dans la base de données mypgdb, exécutez la commande suivante :

    pg_restore -U sde -d mypgdb -n public mypgdb1031.dump
    
  7. Restaurez ensuite le contenu de la structure sde.
    pg_restore -U sde -d mypgdb -n sde mypgdb1031.dump
    
  8. Enfin, restaurez les structures et données restantes.
    pg_restore –U sde –d mypgdb mypgdb1031.dump
    
  9. Reconnectez-vous à psql et modifiez le chemin de recherche de la base de données restaurée afin d'inclure la structure sde.
    ALTER DATABASE mypgdb
      SET SEARCH_PATH="$user",sde,public;
    
  10. Au terme de la restauration, testez la base de données en vous y connectant à partir d'ArcGIS for Desktop et en examinant les données.

Thèmes connexes

5/10/2014