Restaurer une géodatabase dans PostgreSQL

Disponible avec une licence Standard ou Advanced.

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.

Attention :

Lorsque vous restaurez une géodatabase ou une base de données alors que ST_Geometry est installé, vous devez restaurer les structures dans un ordre spécifique : tout d’abord les structures publique et sde, puis les structures restantes. Si vous ne suivez pas cette étape, il est possible que certaines classes d’entités ne soient pas restaurées et que les index spatiaux ne soient pas créés sur celles restaurées.

Pour obtenir des instructions générales sur la récupération, par exemple sur les options de syntaxe, consultez la documentation PostgreSQL. En outre, si vous avez installé PostGIS et si vous utilisez le stockage de géométrie ou de géographie, veillez à lire attentivement la documentation PostGIS concernant la création de sauvegardes et la restauration de bases de données. Cette procédure peut varier selon 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 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 procédez à la restauration dans un nouvel agrégat de bases de données, connectez-vous à psql, recréez le rôle de connexion sde et accordez-lui l’autorité de superutilisateur.

    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 editor1;
    
    CREATE ROLE editor2 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 reader2 LOGIN
      ENCRYPTED PASSWORD 'pw.4reader2'
      NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
    GRANT readers TO reader2;

  4. Si vous procédez à la restauration dans un nouvel agrégat de bases de données et que la géodatabase utilise le type spatial ST_Geometry, placez la bibliothèque st_geometry dans le répertoire PostgreSQL lib.

    Reportez-vous à la rubrique Créer une géodatabase dans PostgreSQL sur Linux ou Créer une géodatabase dans PostgreSQL sur Windows pour en savoir plus sur le placement de la bibliothèque st_geometry.

  5. 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.

    Remarque :

    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

  6. Créez une structure sde appartenant au 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;
    
    GRANT USAGE ON SCHEMA sde TO dataowners;
    GRANT USAGE ON SCHEMA sde TO editors;
    GRANT USAGE ON SCHEMA sde TO readers;

  7. Modifiez le chemin de recherche de la nouvelle base de données pour qu'il comprenne la structure sde.

    ALTER DATABASE mypgdb
      SET SEARCH_PATH="$user",public,sde;

  8. Sur la ligne de commande, restaurez les structures publique et sde ainsi que leurs données à l’aide de la commande pg_restore.

    Exécutez la commande après vous être connecté avec un identifiant disposant des privilèges de superutilisateur, comme l’utilisateur postgres.

    Lisez la documentation PostgreSQL pour en savoir plus sur la syntaxe pg_restore, car elle varie en fonction de la façon dont vous avez créé la sauvegarde et de la version de PostgreSQL que vous utilisez.

  9. Enfin, restaurez les structures et données restantes.
  10. Lorsque la restauration de la base de données est terminée, connectez-vous à la base de données dans ArcGIS AllSource et examinez les données pour vérifier que toutes les données ont été restaurées.