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;
- Si restaura en un nuevo clúster de base de datos, asegúrese de colocar la biblioteca st_geometry en la ubicación lib de PostgreSQL. Consulte Configurar una geodatabase en PostgreSQL en Linux o Configurar una geodatabase de PostgreSQL en Windows para obtener detalles sobre cómo colocar la biblioteca st_geometry.
- 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.
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; GRANT USAGE ON SCHEMA sde TO dataowners; GRANT USAGE ON SCHEMA sde TO editors; GRANT USAGE ON SCHEMA sde TO readers;
- Modifique la ruta de búsqueda de la nueva base de datos para que incluya el esquema sde.
ALTER DATABASE mypgdb SET SEARCH_PATH="$user",sde,public;
- 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.
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
- Una vez que la restauración de la base de datos se haya completado, pruébela mediante una conexión a esta desde ArcGIS Desktop y examinando los datos.