下载 RDS 快照

89

我最近将我的EC2实例降级了。现在我无法连接到RDS数据库。我认为可能是因为内部IP不同,现在登录信息与该特定IP相关联。我还没有找到解决方法。我希望能够从快照中获取备份。是否有通过AWS下载快照的方法?

8个回答

74

您无法直接下载RDS快照。但是,您可以连接到它并导出您的数据库。降级实例不应影响连接性,除非您错误地设置了安全组(将端口打开给IP而不是其他安全组)。


我已经验证了EC2实例可以通过telnet连接到RDS端点上的3306端口。但是我的登录不起作用。我的安全组甚至没有指定mysql(我认为这是针对EC2实例的入站流量)。db安全组指定了EC2安全组,而我的EC2实例也有。我相信这就是应该设置的方式。这就是最初有效的方法。我刚刚尝试了一个比我的文件中存储的密码旧的密码,它起作用了。但是很高兴确信不能下载RDS快照。谢谢! - William
7
如何连接到快照?能否在不将快照还原到数据库的情况下完成连接? - ScotterC
13
@ScotterC,您需要使用快照创建一个新实例。 - datasage
6
一个例子会更好,@datasage。这个回答有点懒。 - hmedia1
7
这似乎比应该的复杂得多。 - user2588667
显示剩余5条评论

47

接受的答案已不再适用。现在您可以使用AWS控制台,而不是使用命令行工具。

导航到RDS->快照->手动/系统->

选择快照->操作->导出到S3

在大多数生产环境中,通过S3进行操作是很常见的,因为您无法直接访问DB实例。

带有导出到S3的AWS RDS控制台


2
作为澄清:此仅适用于选定的地区,未在所有地区提供。https://aws.amazon.com/about-aws/whats-new/2020/01/announcing-amazon-relational-database-service-snapshot-export-to-s3/ - Vincent Duprez
2
每次尝试导出快照时,我都会收到“参数中缺少必需的密钥'KmsKeyId'”的错误提示。我们是否被强制使用加密? - BenMorel
1
由于某些原因,我的导出到S3的选项变灰了 :/ - Casey L
1
你可以将文件导出到S3,然后下载,但是这样会使用KMS密钥进行加密,而你无法下载该密钥,这将使得你的软件包在任何远离AWS的环境中都无法使用。我说的对吗? - NeverEndingQueue
7
这会将数据以Parquet格式导出,这可能不是您想要的格式。 - Mr. S
显示剩余2条评论

13

除了datasage的回答外。

作为生产实例的一种选择,您可以在RDS中创建只读副本,并从此副本进行转储。这样可以避免生产数据库冻结。

我们在PostgreSQL + pg_dump中使用此方案。希望对其他人也有所帮助。


5
我使用以下命令进行备份: pg_dump -v -h RDS_URL -Fc -o -U username dbname > your_dump.sql 该命令可以将数据库备份到your_dump.sql文件中。

2
感谢您的回答 - 虽然代码/配置片段可能会提供一些有限的短期帮助,但适当的解释将极大地提高其长期价值,因为它展示了为什么这是一个好的问题解决方案,并使其对未来读者具有其他类似问题更有用。请编辑您的答案以添加一些解释,包括您所做的假设。 - kenny_k
短版本的旗帜适用于书写,长版本则适用于阅读。 - Ben Longo

3

我也需要这样做,所以我通过登录拥有访问数据库权限的应用服务器来创建了数据库(MySQL)的转储。然后我使用scp将转储文件下载到我的本地机器。我使用了以下命令:

mysqldump -uroot -p -h<HOST> --single-transaction <DBNAME> > output.sql

这个回答不太有帮助,原因有两点:首先它没有回答问题,其次需要连接RDS实例,而OP之所以问这个问题,恰恰是因为他们无法连接。 - toon81
@toon81实际上他涵盖了连接问题。 如果您无法从外部连接,则可以从EC2连接,如果是VPC问题。 - Bogdan Mart
@BogdanMart 自从降级他们的EC2实例后,OP无法连接,这表明他们一直在尝试从EC2实例连接。无论如何,这仍然不重要,因为OP并没有询问如何连接。我认为他们应该这样做,但事实仍然是这个问题与其他事情有关。 - toon81

1
另一个选项是共享您的快照,如果您不需要下载它,只想与不同的AWS帐户ID共享它。

你还需要共享主密钥,否则无法解密快照。 - Ivan Nikitin

1
听起来你的RDS位于VPC内的私有子网中,并带有安全组和ACL。解决问题的唯一方法是拍摄快照并在默认VPC中创建一个新的DB实例,其中允许所有连接。之后,您可以使用db客户端或CLI进行备份。

0
“导出到S3”选项对我很有效。我能够恢复我想要的表格,并使用“Tad”应用程序在本地查看它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接