【问题标题】:How to pg_dump an RDS Postgres database?如何 pg_dump 一个 RDS Postgres 数据库?
【发布时间】:2021-05-07 06:09:40
【问题描述】:

如何使用 pg_dump 连接到我的 RDS 实例?

这是实例的端点:

<long public dns thing>:5432

所以我正在运行这个命令:

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

得到这个:

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?

这是亚马逊的故障排除建议:

无法连接到 Amazon RDS PostgreSQL 数据库实例

尝试连接到 PostgreSQL 数据库实例时最常见的问题是分配给数据库实例的安全组的访问规则不正确。默认情况下,数据库实例不允许访问;通过安全组授予访问权限。要授予访问权限,您必须创建自己的安全组,并针对您的情况使用特定的入口和出口规则。有关为数据库实例创建安全组的更多信息,请参阅创建安全组。

最常见的错误是无法连接到服务器:连接超时。如果您收到此错误,请检查主机名是否为数据库实例终端节点并且端口号是否正确。检查分配给数据库实例的安全组是否具有允许通过本地防火墙进行访问的必要规则。

有没有办法从 pg_dump 指定我的安全组?如果是这样,我是否必须像在 ssh'ing 时需要 ssh 密钥那样获取本地副本?

甚至尝试远程使用 pg_dump 是错误的吗?我应该尝试 ssh 到实例上,还是完全做其他事情?

【问题讨论】:

  • 这是因为您没有指定正确的凭据吗? -U postgres 或任何适合您的数据库的东西?
  • -U postgres 指定我的用户名是'postgres'?...
  • 是的,完全正确。 pg_dump -U postgres -h etc... 或任何正确的 postgres 用户。我记得默认情况下它通常是“postgres”。

标签: database postgresql amazon-web-services


【解决方案1】:

第 1 步:在 AWS 上创建一个安全组,将您的计算机的 IP 地址列入白名单。

第 2 步:将该安全组添加到您要连接的数据库实例。

第 3 步:运行 pg_dump。确保使用 -U 命令指定您的用户名(感谢@LHWizard)。在这种情况下,我的不是'postgres',所以我想一般来说你必须查看aws才能找到它。还要确保指定数据库的名称:在某些命令行工具中有一个 -d 开关,但如果您检查 pg_dump 的用法:

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

你可以看到这是一个正式的论点。 所以整个命令(在我的例子中)是:

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

请注意,不需要指定端口号——我认为因为端口 5432 是 postgres 的端口。

【讨论】:

  • pg_dump 确实包含-d 开关。此语法有效(9.3+):pg_dump -h my_host -U username -d target_db &gt; dump_file
  • 我刚刚遇到了这个问题,并想指出“postgres”用户是一种约定,在大多数情况下作为超级用户存在并且通常可以工作,但该用户在 RDS 上并不存在。这可能是由于共享服务器资源架构造成的。每当您创建实例时都会创建一个超级用户,但您通常会使用特定于您尝试转储的数据库的用户来执行 RDS 上的此类过程。
  • 如果您的客户端版本与服务器不同,这将不起作用。有没有办法在不使用 pg_dump 的情况下获取 SQL 转储?
  • @Brendan 服务器显示的是 9.6 版本,而实例的 ssh 显示 postgres db 的版本是 9.3.2,所以 pg_dump 失败了。有什么解决办法吗??
  • @JissRaphel,对不起,朋友不知道。自 2015 年以来就没有搞砸过这些东西 :(
猜你喜欢
  • 2023-01-03
  • 2018-07-22
  • 2014-12-24
  • 2018-10-12
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多