使用备份文件可以将现有 PostgreSQL 企业级地理数据库从本地服务器移至 ArcGIS Enterprise on Amazon Web Services 实例,或者从一个 ArcGIS Enterprise on Amazon Web Services 实例移至另一个。
要实现此操作,请为源地理数据库创建备份,将备份文件传输至目标 ArcGIS Enterprise on Amazon Web Services 实例,在目标 PostgreSQL 数据库集群中创建数据库和登录角色,然后恢复该数据库。
检查自定义变量设置
必须将源数据库集群中要保留的任何自定义设置添加到新的数据库集群中。配置设置存储在 postgresql.conf 文件中。创建该文件的副本并将其移至 ArcGIS Enterprise on Amazon Web Services 实例上的目标数据库集群。
可在挂载驱动器的 /data 中找到 ArcGIS Enterprise on Amazon Web Services 实例上的 postgresql.conf 文件。
为源地理数据库创建备份
您可以通过为数据库创建备份将数据文件传输至 ArcGIS Enterprise on Amazon Web Services 实例。
使用 PostgreSQL pg_dump 应用程序来创建转储文件。
- 连接到存储源地理数据库的服务器。
- 在 shell 命令提示符处执行 pg_dump 命令来为数据库创建备份。
pg_dump -U postgres -F c > /data/spdbbu11012.dump
有关 pg_dump 应用程序的详细信息,请参阅 PostgreSQL 文档。
将备份文件移动至目标实例
可通过一些方法将转储文件传输至目标实例。有关移动数据的不同选择,请参阅向 Amazon Web Services 传输数据的策略。如果必要,您可以使用相同的方法移动 postgresql.conf 文件。
确保将转储文件放置在弹性块存储 (EBS) 卷上。
转储文件位于目标 ArcGIS Enterprise on Amazon Web Services 实例上后,准备 PostgreSQL 数据库集群。
准备目标 PostgreSQL 数据库集群
您必须拥有在其中恢复转储文件的数据库。并且,源数据库中任何拥有数据的登录角色必须存在于目标数据库集群中。
替换配置文件
如果要使用自定义的 postgresql.conf 文件,请在目标实例上创建默认 postgresql.conf 文件的备份,并将自定义文件放置在挂载驱动器的 /data 中。
创建空数据库
您所创建的数据库名称必须与您创建转储文件的源 PostgreSQL 数据库集群中的数据库名称一致。在同一数据库集群中,数据库名称必须是唯一的。这意味着如果您将数据库从 ArcGIS Enterprise on Amazon Web Services 移动至另一个,则必须符合以下条件之一:
- 您的源数据库不能是默认的数据库之一(egdb 或 geodata)。
或者
- 在恢复传输的备份文件之前,您必须从目标 PostgreSQL 数据库集群删除重名的默认数据库。
- 以根用户身份登录至目标 ArcGIS Enterprise on Amazon Web Services 实例。
- 打开 shell 命令并以 sde 用户身份登录 psql。
- 创建在其中恢复转储文件的数据库。
请记住以下信息:
- 目标数据库的名称、所有者和编码必须与源数据库中的名称、所有者和编码一致。
- 如果您对源数据库使用了非默认的数据库模板,如 PostGIS 数据库模板,请对目标数据库也使用该模板。
- 您可以在现有的表空间中存储新的数据库,或为该数据库专门创建新的表空间。如果想要使用新的表空间,您必须在创建数据库之前进行创建。
CREATE DATABASE <dbname> WITH OWNER = sde TEMPLATE = template0 ENCODING = '<encoding of db>' TABLESPACE = LC_COLLATE = '' LC_CTYPE = '' CONNECTION LIMIT = -1;
创建登录角色和组角色
目标数据库集群必须包含每个用户(在源数据库中拥有数据)的登录角色。
如果您将数据库从一个 ArcGIS Enterprise on Amazon Web Services 实例移至另一个,并且采用默认的登录角色,则无需在目标数据库集群中创建新的角色。但是,如果源数据库中的数据为非默认登录角色所有,您必须创建与目标 PostgreSQL 数据库集群中的登录角色同名的登录角色。同样地,如果想要使用目标数据库中的组登录,您必须重新创建组登录并将其授予给登录角色。
有关创建组角色和登录角色以及向组中添加登录帐户的信息,请参阅 PostgreSQL 文档。
恢复数据库
使用 PostgreSQL pg_restore 应用程序来恢复数据库。
警告:
您必须两次运行 pg_restore 命令:一次用于恢复包含 sde_spatial_references 系统表的公共方案,另一次用于恢复其余的数据。如果未执行此操作,则无法恢复空间数据。
- 连接至目标 ArcGIS Enterprise on Amazon Web Services 实例(您将转储文件移动至其中的实例)。
- 打开 shell 命令并以 sde 用户身份登录 psql。
- 在 shell 命令提示符处执行 pg_restore 命令以在数据库中恢复公共方案。
执行 pg_restore 命令的 sde 用户必须是 PostgreSQL 中的超级用户。
pg_restore -U sde -n public -d spdb /data/spdbbu11012.dump Password:
- 再次执行 pg_restore 命令以恢复整个数据库。
pg_restore -U sde -d spdb /data/spdbbu11012.dump Password:
有关 pg_restore 应用程序的详细信息,请参阅 PostgreSQL 文档。
在目标 PostgreSQL 数据库集群上恢复数据库之后,检查以确保新的数据库中存在您期望的方案和表。为此,查询存储该信息的 PostgreSQL 目录视图。例如,您可以查询 pg_tables 目录视图以查看数据库中的所有表和存储表的方案。
设置数据库变量
接下来,您将使用之前收集的自定义数据库变量信息在新的数据库中设置变量。
这些步骤将指示您如何添加和设置 search_path 变量。设置其他数据库变量的自定义值将采用相同的基本步骤。
- 以 sde 用户身份从 psql 连接到新的数据库。
- 使用 psql 提示符,为包含 sde 方案的数据库设置搜索路径。
SET search_path TO "$user",public,sde;