简体   繁体   English

如何 pg_dump RDS Postgres 数据库?

[英]How to pg_dump an RDS Postgres database?

How can I connect to my RDS instance using pg_dump?如何使用 pg_dump 连接到我的 RDS 实例?

This is the instance's endpoint:这是实例的端点:

<long public dns thing>:5432

So I'm running this command:所以我正在运行这个命令:

pg_dump -h <long public dns thing> -p 5432 -f dump.sql

And getting this:并得到这个:

pg_dump: [archiver (db)] connection to database "brendan" failed:
could not connect to server: Connection refused
Is the server running on host "<long public dns thing>"
(<IP address>) and accepting TCP/IP connections on port 5432?

This is Amazon's troubleshooting advice:这是亚马逊的故障排除建议:

Cannot Connect to Amazon RDS PostgreSQL DB Instance无法连接到 Amazon RDS PostgreSQL 数据库实例

The most common problem when attempting to connect to a PostgreSQL DB instance is that the security group assigned to the DB instance has incorrect access rules.尝试连接到 PostgreSQL 数据库实例时最常见的问题是分配给数据库实例的安全组具有不正确的访问规则。 By default, DB instances do not allow access;默认情况下,数据库实例不允许访问; access is granted through a security group.通过安全组授予访问权限。 To grant access, you must create your own security group with specific ingress and egress rules for your situation.要授予访问权限,您必须根据您的情况使用特定的入口和出口规则创建自己的安全组。 For more information about creating a security group for your DB instance, see Create a Security Group.有关为数据库实例创建安全组的更多信息,请参阅创建安全组。

The most common error is could not connect to server: Connection timed out.最常见的错误是无法连接到服务器:连接超时。 If you receive this error, check that the host name is the DB instance endpoint and that the port number is correct.如果您收到此错误,请检查主机名是否为数据库实例终端节点以及端口号是否正确。 Check that the security group assigned to the DB instance has the necessary rules to allow access through your local firewall.检查分配给数据库实例的安全组是否具有允许通过本地防火墙进行访问的必要规则。

Is there a way to specify my security group from pg_dump?有没有办法从 pg_dump 指定我的安全组? If so, do I have to get a local copy of that the way that I need an ssh key when ssh'ing?如果是这样,我是否必须像在 ssh'ing 时需要 ssh 密钥那样获取本地副本?

Is it a mistake to even try to use pg_dump remotely?甚至尝试远程使用 pg_dump 是错误的吗? Should I be trying to just ssh onto the instance instead, or doing something else entirely?我应该尝试仅通过 ssh 连接到实例,还是完全做其他事情?

Step 1: Create a security group on AWS that has your computer's IP address white listed.步骤 1:在 AWS 上创建一个安全组,将您的计算机的 IP 地址列入白名单。

Step 2: Add that security group to the database instance you want to connect to.步骤 2:将该安全组添加到您要连接的数据库实例。

Step 3: Run pg_dump.第 3 步:运行 pg_dump。 Make sure to specify your user name (thanks @LHWizard) with the -U command.确保使用 -U 命令指定您的用户名(感谢 @LHWizard)。 In this case mine wasn't 'postgres', so I guess generally you'll have to look in aws to find it.在这种情况下,我的不是“postgres”,所以我想通常你必须查看 aws 才能找到它。 Also make sure to specify your database's name: in some command line tools there's a -d switch for that, but if you check pg_dump's usage:还要确保指定您的数据库名称:在某些命令行工具中,有一个 -d 开关,但是如果您检查 pg_dump 的用法:

Usage:
  pg_dump [OPTION]... [DBNAME]

you can see that it's a formal argument.你可以看到这是一个正式的论证。 So the whole command (in my case) was:所以整个命令(就我而言)是:

pg_dump -h <public dns> -U <my username> -f dump.sql <name of my database>

Notice that specifying the port number wasn't necessary -- I think because port 5432 is THE port for postgres.请注意,没有必要指定端口号——我认为是因为端口 5432 是 postgres 的端口。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM