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.
Pour restaurer une géodatabase ou une base de données si ST_Geometry est installé, vous devez restaurer les structures dans un ordre spécifique : tout d'abord la structure publique, puis la structure sde et enfin 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.
- 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
- 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;
- 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;
- Si vous procédez à une restauration dans un nouvel agrégat de bases de données, placez la bibliothèque st_geometry dans le répertoire lib de PostgreSQL. Reportez-vous aux rubriques Configurer une géodatabase dans PostgreSQL sous Linux ou Configurer une géodatabase dans PostgreSQL sous Windows pour savoir où placer la bibliothèque st_geometry.
- 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.
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
- 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; GRANT USAGE ON SCHEMA sde TO dataowners; GRANT USAGE ON SCHEMA sde TO editors; GRANT USAGE ON SCHEMA sde TO readers;
- 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",sde,public;
- 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.
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
- Restaurez ensuite le contenu de la structure sde.
pg_restore -U sde -d mypgdb -n sde mypgdb1031.dump
- Enfin, restaurez les structures et données restantes.
pg_restore –U sde –d mypgdb mypgdb1031.dump
- 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.