将postgres db导入新AWS

时间:2017-04-05 20:45:07

标签: postgresql amazon-web-services amazon-ec2 amazon-rds

我有一个postgres数据库,我已经能够使用以下方法转储和恢复到其他postgres安装:

pg_dump the_db_name > the_backup.sql

然后将备份复制到开发服务器,使用以下命令恢复:

psql the_new_dev_db < the_backup.sql

h/t to this link for that gem.

我还能够为wordpress,ruby和amp;设置和配置ec2,s3和eb(弹性beanstalk)安装。节点js需要。但是,我正盯着试图将postgres数据库导入亚马逊rds实例的深渊。我怀疑这不是一个psql问题,而是一个安全问题。关于尝试什么的任何建议我都非常感激。

我使用.pem文件连接到aws。

我可以配置pgAdmin使用ssh隧道连接到我的rds实例。

我无法使用psql nor can I configure pgAdmin to connect to my db in the way AWS recommends.

连接到AWS上的postgres数据库

在这两种情况下,我都会收到错误:

psql: could not connect to server: Connection timed out
    Is the server running on host "xxxxxxx.us-west-2.rds.amazonaws.com" (xx.xx.xx.xx) and accepting
    TCP/IP connections on port 5432?

在rds仪表板中,我看到我的实例是两个安全组的一部分。当我点击它时,它说:

Your account does not support the EC2-Classic Platform in this region. DB Security Groups are only needed when the EC2-Classic Platform is supported. Instead, use VPC Security Groups to control access to your DB Instances. Go to the EC2 Console to view and manage your VPC Security Groups. For more information, see AWS Documentation on Supported Platforms and Using RDS in VPC

当我点击其他安全组并转到其入站选项卡时,我看到有两个引用显示Postgresql正在端口5432上接收TCP

同样在RDS仪表板中,我看到我有一个VPC ID,but after reading this article,我不确定要走哪条路,因为“支持的平台”没有字段。

如果我尝试从pgAdmin中的工作配置进行恢复,我会收到与连接一样的消息:

pg_restore: [archiver (db)] connection to database "ebdb" failed: could not connect to server: Connection timed out
    Is the server running on host "XXXX.us-west-2.rds.amazonaws.com" (54.148.0.217) and accepting
    TCP/IP connections on port 5432?

最后,我尝试在pgAdmin中调用db中的PSQL控制台。它出现了,我可以运行psql命令,如:

ebdb=> \conninfo
You are connected to database "ebdb" as user "awsuser" on host "127.0.0.1" at port "34883".
SSL connection (protocol: TLSv1.2, cipher: XXXX, bits: 256, compression: off)

但是,如果我尝试使用此命令在这里运行pg_restore:

ebdb=> \! /usr/bin/pg_restore --dbname "ebdb" --section pre-data --section data --section post-data --create --clean --verbose "/home/awsuser/040517.backup"

它不会创建任何表格或推送任何数据。控制台启动并闪烁所有SQL命令和数据,就像它有效一样,但当我回到pgAdmin并看它仍然是空的时。

1 个答案:

答案 0 :(得分:0)

通过添加弹性beanstalk服务器的安全组作为postgres入站流量的来源,我能够通过上面的pg_restore命令导入数据库。

EC2 console \ security groups \ inbound 我有PostgresQL和端口5432,但需要将eb服务器的安全组sg-xxxx添加到源字段中。

关于新错误!