从 Amazon EC2 实例导入 PostgreSQL 数据库
如果您在 Amazon EC2 实例上的 PostgreSQL 服务器中有数据,并要将其移至 PostgreSQL 数据库实例,则可以按照此过程迁移数据。
-
使用 pg_dump 创建一个文件,其中包含要加载的数据
-
创建目标数据库实例
-
使用 psql 在数据库实例上创建数据库,然后加载数据
-
创建该数据库实例的数据库快照
以下各节提供了上述每个步骤的更多详细信息。
步骤 1:使用包含要加载的数据的 pg_dump 创建文件
pg_dump
实用程序使用 COPY 命令创建 PostgreSQL 数据库的架构和数据转储。pg_dump
生成的转储脚本将数据加载到一个同名的数据库中,然后重新创建表、索引和外键。您可以使用 pg_restore
命令和 -d
参数将数据恢复到具有不同的名称的数据库。
在创建数据转储之前,应查询要转储的表以获取行数,以使您可确认目标数据库实例上的数量。
以下命令为一个名为 mydb2 的数据库创建一个名为 mydb2dump.sql 的转储文件。
prompt>pg_dump dbname=mydb2 -f mydb2dump.sql
步骤 2:创建目标数据库实例
使用 Amazon RDS 控制台、AWS CLI 或 API 创建目标 PostgreSQL 数据库实例。在备份保留设置为 0 的情况下创建该实例,然后禁用多可用区。这样做可更快地导入数据。您必须先在该实例上创建一个数据库,然后才能转储数据。数据库可以与包含转储数据的数据库具有相同名称。或者,您可以使用其他名称创建数据库。在这种情况下,您使用 pg_restore
命令和 -d
参数将数据还原到新命名的数据库中。
例如,以下命令可用于转储、还原和重命名数据库。
pg_dump -Fc -v -h
[endpoint of instance]
-U[master username]
[database]
>[database]
.dump createdb[new database name]
pg_restore -v -h[endpoint of instance]
-U[master username]
-d[new database name]
[database]
.dump
步骤 3:使用 psql 在数据库实例上创建数据库,然后加载数据
可使用用于运行 pg_dump 命令的同一连接,连接到目标数据库实例并重新创建数据库。使用 psql 时,可使用主用户名和主密码在数据库实例上创建数据库
以下示例使用 psql 和一个名为 mydb2dump.sql 的转储文件,在一个名为 mypginstance 的 PostgreSQL 数据库实例上创建一个名为 mydb2 的数据库:
对于 Linux、macOS 或 Unix:
psql \ -f
mydb2dump.sql
\ --hostmypginstance.555555555555
.aws-region
.rds.amazonaws.com \ --port8199
\ --usernamemyawsuser
\ --passwordpassword
\ --dbnamemydb2
对于 Windows:
psql ^ -f
mydb2dump.sql
^ --hostmypginstance.555555555555
.aws-region
.rds.amazonaws.com ^ --port8199
^ --usernamemyawsuser
^ --passwordpassword
^ --dbnamemydb2
注意
作为安全最佳实践,请指定除此处所示提示以外的密码。
步骤 4:创建数据库实例的数据库快照
确认已将数据加载到数据库实例中后,建议创建目标 PostgreSQL 数据库实例的数据库快照。数据库快照是数据库实例的完整备份,可用于将数据库实例还原到已知状态。通过使用在加载后立即创建的数据库快照,您可以在遇到问题时不必再次加载数据。您也可以使用此类快照创建新的数据库实例。有关创建数据库快照的更多信息,请参阅为 Amazon RDS 的单可用区数据库实例创建数据库快照。