Восстановление базы геоданных на PostgreSQL

Доступно с лицензией Standard или Advanced.

Для восстановления базы данных из файла архива, созданного с помощью команды pg_dump, используйте команду pg_restore. Проверьте модели архивирования и восстановления заранее на тестовых базах данных.

Когда вы восстанавливаете базу данных или геоданных с типом геометрии ST_Geometry, необходимо восстанавливать схемы в определенном порядке: сначала следует восстановить схему public, затем sde, затем остальные.

Общие инструкции по восстановлению, такие как опции синтаксиса, см. в документации к PostgreSQL. Также, если у вас установлена система PostGIS, и вы используете хранилище геометрии или географии, обязательно прочитайте документацию PostGIS по созданию резервных копий и восстановлению баз данных. Этот процесс может выполняться по-разному в зависимости от используемой вами версии PostGIS.

  1. В кластере PostgreSQL имена баз данных должны быть уникальны, поэтому, если вы восстанавливаете такой же кластер баз данных, необходимо удалить существующую базу данных.

    dropdb –U sde mypgdb

  2. Если вы восстанавливаете данные в новый кластер, войдите в psql, снова создайте роль учетной записи sde и назначьте ей права суперпользователя.

    CREATE ROLE sde LOGIN 
      ENCRYPTED PASSWORD '0shallpass'
      SUPERUSER INHERIT;

  3. Если вы восстанавливаете данные в новый кластер, снова создайте роли учетных записей для всех владельцев данных.

    Также вы можете заново создать роли редактора и роль "только для чтения", хотя для восстановления базы данных это не обязательно.

    В следующем примере скрипт создает роли и группы владельца данных, редактора и роль "только для чтения", затем добавляет роли в соответствующие группы.

    --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. Если вы восстанавливаете данные в новый кластер базы данных, и база геоданных использует пространственный тип ST_Geometry, убедитесь, что библиотека st_geometry.dll помещена в директорию PostgreSQL lib.

    Дополнительные сведения о размещении библиотеки st_geometry см. в Создание базы геоданных в PostgreSQL на Linux или Создание базы геоданных в PostgreSQL на Windows.

  5. Создайте базу данных заново.

    Это можно сделать с помощью выражения createdb в командной строке или выражения psql.

    Примечание:

    Убедитесь, что новая база данных имеет те же свойства, что и та, которую вы восстанавливаете, включая имя, кодировку и владельца.

    В следующем примере инструмент командной строки createdb используется для создания базы данных mypgdb с кодировкой UTF8, принадлежащей роли учетной записи sde и расположенной в табличном пространстве tblspgdb:

    createdb –U sde –E UTF8 –D tblspgdb -O sde mypgdb

  6. Создайте схему sde, принадлежащую роли sde, в новой базе данных. Предоставьте право пользователя в схеме sde всем остальным ролям учетных записей, которым необходим доступ к базе геоданных.

    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. Измените путь поиска для новой базы данных, чтобы включить схему sde.

    ALTER DATABASE mypgdb
      SET SEARCH_PATH="$user",sde,public;

  8. Из командной строки восстановите схему public и данные, используя команду pg_restore.

    Запустите команду от имени учетной записи с правами суперпользователя, например, postgres.

    Например, для восстановления схем public и sde из файла архива базы данных mypgdb31oct.dump в базу mypgdb, выполните следующее:

    pg_restore -U sde -d mypgdb -n public,sde mypgdb31oct.dump

  9. И наконец, восстановите остальные схемы и данные.

    pg_restore –U sde –d mypgdb mypgdb31oct.dump

  10. После завершения восстановления базы данных, проверьте ее, подключившись из ArcGIS Pro и изучив данные.