从 Amazon EC2 实例导入 PostgreSQL 数据库 - Amazon Relational Database Service

从 Amazon EC2 实例导入 PostgreSQL 数据库

如果您在 Amazon EC2 实例上的 PostgreSQL 服务器中有数据,并要将其移至 PostgreSQL 数据库实例,则可以按照此过程迁移数据。

  1. 使用 pg_dump 创建一个文件,其中包含要加载的数据

  2. 创建目标数据库实例

  3. 使用 psql 在数据库实例上创建数据库,然后加载数据

  4. 创建该数据库实例的数据库快照

以下各节提供了上述每个步骤的更多详细信息。

步骤 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 \ --host mypginstance.555555555555.aws-region.rds.amazonaws.com \ --port 8199 \ --username myawsuser \ --password password \ --dbname mydb2

对于 Windows:

psql ^ -f mydb2dump.sql ^ --host mypginstance.555555555555.aws-region.rds.amazonaws.com ^ --port 8199 ^ --username myawsuser ^ --password password ^ --dbname mydb2
注意

作为安全最佳实践,请指定除此处所示提示以外的密码。

步骤 4:创建数据库实例的数据库快照

确认已将数据加载到数据库实例中后,建议创建目标 PostgreSQL 数据库实例的数据库快照。数据库快照是数据库实例的完整备份,可用于将数据库实例还原到已知状态。通过使用在加载后立即创建的数据库快照,您可以在遇到问题时不必再次加载数据。您也可以使用此类快照创建新的数据库实例。有关创建数据库快照的更多信息,请参阅为 Amazon RDS 的单可用区数据库实例创建数据库快照