Restaurar una geodatabase en PostgreSQL
Para restaurar una base de datos desde un archivo que se creó mediante el comando pg_dump, utilice el comando pg_restore. Asegúrese de probar los modelos de recuperación y copia de seguridad con las bases de datos de prueba.
Al restaurar una geodatabase o una base de datos que tiene instalado ST_Geometry, se deben restaurar los esquemas en un orden específico: en primer lugar el esquema público, seguido del esquema sde y, a continuación, los esquemas restantes.
Para obtener instrucciones de recuperación generales, como las opciones de sintaxis, consulte la documentación de PostgreSQL. Además, si tiene instalado PostGIS y utiliza almacenamiento de geometría, asegúrese de leer la documentación de PostGIS sobre la creación de copias de seguridad y la restauración de bases de datos. Este procedimiento puede variar según la versión de PostGIS que utilice.
- Los nombres de las bases de datos deben ser únicos en el clúster de base de datos de PostgreSQL; por lo tanto, si restaura al mismo clúster de base de datos, debe eliminar la base de datos existente.
dropdb –U sde mypgdb
- Si restaura a un nuevo clúster de base de datos, inicie sesión en psql, vuelva a crear el rol de inicio de sesión de sde y otórguele privilegios de superusuario.
CREATE ROLE sde LOGIN ENCRYPTED PASSWORD '0shallpass' SUPERUSER INHERIT;
- Si restaura a un nuevo clúster de base de datos, vuelva a crear los roles de inicio de sesión para todos los propietarios de datos. También puede volver a crear roles de inicio de sesión de editor y solo lectura en ese momento, aunque no es necesario para restaurar la base de datos.
La siguiente secuencia de comandos de ejemplo crea grupos y roles de inicio de sesión de propietario de datos, edición y lectura, y añade los roles de inicio de sesión a los grupos adecuados.
--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;
- Vuelva a crear la base de datos. Para ello puede usar la instrucción createdb en la línea de comandos o la instrucción psql. Nota:
Asegúrese de que la nueva base de datos tenga las mismas propiedades que la base de datos que desea restaurar, incluido el nombre, la codificación y el propietario.
El siguiente ejemplo usa la herramienta de línea de comandos createdb para crear una base de datos denominada mypgdb con una codificación de UTF8, propiedad del rol de inicio de sesión de sde y ubicada en un espacio de tabla tblspgdb:
createdb –U sde –E UTF8 –D tblspgdb -O sde mypgdb
- Vuelva a iniciar sesión en psql y cree un esquema sde propiedad del rol de inicio de sesión de sde en la nueva base de datos. Otorgue el uso en el esquema sde a todos los roles de inicio de sesión o grupos que accederán a la geodatabase.
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;
- En la línea de comandos, restaure el esquema público y los datos usando el comando pg_restore. Ejecute el comando como un inicio de sesión con privilegios de superusuario, como el usuario postgres o sde.Precaución:
Primero, debe restaurar el esquema público y su contenido. Si no lo hace, algunos de los datos espaciales no se restaurarán. En segundo lugar, restaure el esquema sde. Si no lo hace, los índices espaciales no se volverán a crear en las clases de entidad.
Por ejemplo, para restaurar el esquema público de un archivo de copia de seguridad de base de datos denominado mypgdb1031.dump en la base de datos mypgdb, ejecute lo siguiente:
pg_restore -U sde -d mypgdb -n public mypgdb1031.dump
- A continuación, restaure los contenidos del esquema sde.
pg_restore -U sde -d mypgdb -n sde mypgdb1031.dump
- Por último, restaure los esquemas y los datos restantes.
pg_restore –U sde –d mypgdb mypgdb1031.dump
- Vuelva a iniciar sesión en psql y modifique la ruta de búsqueda de la base de datos restaurada para que incluya el esquema sde.
ALTER DATABASE mypgdb SET SEARCH_PATH="$user",sde,public;
- Una vez que la restauración de la base de datos se haya completado, pruébela mediante una conexión a esta desde ArcGIS for Desktop y examinando los datos.