在 Standard 或 Advanced 许可等级下可用。
要从使用 pg_dump 命令创建的归档文件恢复数据库,请使用 pg_restore 命令。 请确保使用测试数据库对备份和恢复模型进行测试。
警告:
使用安装的 ST_Geometry 恢复地理数据库或数据库时,必须以特定顺序恢复方案:首先恢复公共和 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 库置于 PostgreSQL lib 目录下。
有关放置 st_geometry 库的详细信息,请参阅在 Linux 上的 PostgreSQL 中创建地理数据库或在 Windows 上的 PostgreSQL 中创建地理数据库。
- 重新创建数据库。
您可以在命令行使用 createdb 语句或 psql 语句来完成此操作。
注:
确保新数据库与将恢复的数据库的名称、编码和所有者属性相同。
以下示例将使用 createdb 命令行工具创建 UTF8 编码的数据库 mypgdb,该数据库属于 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;
- 在命令行中,使用 pg_restore 命令恢复公共和 sde 方案及其数据。
以具有超级用户权限的登录用户身份(如 postgres 用户)运行命令。
阅读 PostgreSQL 文档了解 pg_restore 语法,因为语法取决于备份创建方式以及所用 PostgreSQL 版本。
- 最后,恢复其余的方案和数据。
- 完成数据库恢复后,请从 ArcGIS AllSource 连接到数据库并检查数据,以确认所有数据均已恢复。