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, en segundo lugar el 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 o geografí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.

  1. 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
  2. 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 autoridad de superusuario.
    CREATE ROLE sde LOGIN 
      ENCRYPTED PASSWORD '0shallpass'
      SUPERUSER INHERIT;
  3. 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;
  4. Si restaura a un nuevo clúster de base de datos y la geodatabase utiliza el tipo espacial ST_Geometry, asegúrese de colocar la biblioteca st_geometry en el directorio lib de PostgreSQL. Consulte Crear una geodatabase en PostgreSQL en Linux o Crear una geodatabase en PostgreSQL en Windows para obtener más información sobre cómo colocar la biblioteca de ST_Geometry.
  5. 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
  6. 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;
  7. 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;
  8. 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
  9. A continuación, restaure los contenidos del esquema sde.
    pg_restore -U sde -d mypgdb -n sde mypgdb1031.dump
  10. Por último, restaure los esquemas y los datos restantes.
    pg_restore –U sde –d mypgdb mypgdb1031.dump
  11. Una vez que la restauración de la base de datos se haya completado, pruébela mediante una conexión a esta desde ArcGIS Pro y examinando los datos.