Восстановление базы геоданных на 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",public,sde;

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

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

    Ознакомьтесь с документацией PostgreSQL по синтаксису pg_restore, поскольку он варьируется в зависимости от того, как вы создали резервную копию и какую версию PostgreSQL используете.

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