Восстановление базы геоданных на PostgreSQL
Доступно с лицензией Standard или Advanced.
Для восстановления базы данных из файла архива, созданного с помощью команды pg_dump, используйте команду pg_restore. Проверьте модели архивирования и восстановления заранее на тестовых базах данных.
Внимание:
Когда вы восстанавливаете базу данных или геоданных с типом геометрии ST_Geometry, необходимо восстанавливать схемы в определенном порядке: сначала следует восстановить схему public, затем sde, затем остальные. Если вы этого не сделаете, некоторые классы пространственных объектов могут быть не восстановлены, а пространственные индексы не будут созданы для восстановленных классов.
Общие инструкции по восстановлению, такие как опции синтаксиса, см. в документации к PostgreSQL. Также, если у вас установлена система PostGIS, и вы используете хранилище геометрии или географии, обязательно прочитайте документацию PostGIS по созданию резервных копий и восстановлению баз данных. Этот процесс может выполняться по-разному в зависимости от используемой вами версии PostGIS.
В кластере PostgreSQL имена баз данных должны быть уникальны, поэтому, если вы восстанавливаете такой же кластер баз данных, необходимо удалить существующую базу данных.
dropdb –U sde mypgdbЕсли вы восстанавливаете данные в новый кластер, войдите в psql, снова создайте роль учетной записи sde и назначьте ей права суперпользователя.
CREATE ROLE sde LOGIN ENCRYPTED PASSWORD '0shallpass' SUPERUSER INHERIT;Если вы восстанавливаете данные в новый кластер, снова создайте роли учетных записей для всех владельцев данных.
Также вы можете заново создать роли редактора и роль "только для чтения", хотя для восстановления базы данных это не обязательно.
В следующем примере скрипт создает роли и группы владельца данных, редактора и роль "только для чтения", затем добавляет роли в соответствующие группы:
--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;Если вы восстанавливаете данные в новый кластер базы данных, и база геоданных использует пространственный тип ST_Geometry, убедитесь, что библиотека st_geometry.dll помещена в директорию PostgreSQL
lib.Дополнительные сведения о размещении библиотеки st_geometry см. в Создание базы геоданных в PostgreSQL на Linux или Создание базы геоданных в PostgreSQL на Windows.
Создайте базу данных заново.
Это можно сделать с помощью выражения
createdbв командной строке или выражения psql.Примечание:
Убедитесь, что новая база данных имеет те же свойства, что и та, которую вы восстанавливаете, включая имя, кодировку и владельца.
В следующем примере инструмент командной строки
createdbиспользуется для создания базы данных mypgdb с кодировкой UTF8, принадлежащей роли учетной записи sde и расположенной в табличном пространстве tblspgdb:createdb –U sde –E UTF8 –D tblspgdb -O sde mypgdbСоздайте схему 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;Измените путь поиска для новой базы данных, чтобы включить схему sde.
ALTER DATABASE mypgdb SET SEARCH_PATH="$user",public,sde;Из командной строки восстановите схему public и данные, используя команду
pg_restore.Запустите команду от имени учетной записи с правами суперпользователя, например, postgres.
Ознакомьтесь с документацией PostgreSQL по синтаксису
pg_restore, поскольку он варьируется в зависимости от того, как вы создали резервную копию и какую версию PostgreSQL используете.И наконец, восстановите остальные схемы и данные.
После завершения восстановления базы данных проверьте ее, подключившись из ArcGIS Pro и изучив данные.