Restaurar una geodatabase en PostgreSQL

Disponible con una licencia Standard o Advanced.

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.

Precaución:

Al restaurar una geodatabase o una base de datos que tiene instalado ST_Geometry, se deben restaurar los esquemas en un orden específico: primero los esquemas público y sde y, después, el resto de esquemas. Si no lo hace, es posible que algunas clases de entidades no se restauren y no se creen índices espaciales en aquellas que se restauren.

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 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 restaura a un nuevo clúster de base de datos y la geodatabase utiliza el tipo espacial ST_Geometry, coloque la biblioteca st_geometry en el directorio PostgreSQL de lib.

    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. 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",public,sde;

  8. En la línea de comandos, restaure los esquemas público y sde y sus datos usando el comando pg_restore.

    Ejecute el comando como un inicio de sesión con privilegios de superusuario, como el usuario postgres.

    Lea la documentación de PostgreSQL para conocer la sintaxis de pg_restore, ya que varía según el modo en que creó la copia de seguridad y la versión de PostgreSQL utilice.

  9. Por último, restaure los esquemas y los datos restantes.
  10. Cuando se complete la restauración de la base de datos, conéctese a la base de datos desde ArcGIS AllSource y examine los datos para confirmar que se restauraron todos los datos.