EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配

Posted

技术标签:

【中文标题】EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配【英文标题】:Backup gem pg_dump version mismatch between EC2 and RDS 【发布时间】:2016-09-29 17:16:53 【问题描述】:

我正在配置备份 gem (http://backup.github.io/backup/v4/) 以在我的 EC2 实例上运行,将 PostgreSQL 数据库复制到 RDS 中,并将备份存储在新的 S3 存储桶中。

备份 gem 运行 pg_dump 命令,但是 AWS 不允许在 EC2 和 RDS 上安装相同版本的 Postgres,导致以下错误:

pg_dump: server version: 9.4.7; pg_dump version: 9.2.13
pg_dump: aborting because of server version mismatch

这是因为 EC2 实例有版本:

$ pg_dump --version                                                                                                                                                                                                                                                                         
pg_dump (PostgreSQL) 9.2.13

并且RDS实例有版本:

9.4.7-R1(只有 9.5.2-R1 的其他版本选项)

在 EC2 上,运行 yum list postgres* 仅提供最高 PostgreSQL 9.3 的可用软件包。

看来我无法降级 RDS 或将 EC2 升级到匹配版本。

如果有帮助,这是我的备份 gem 模型配置:https://gist.github.com/anonymous/35f6f9e81846f53693fb03662c2192ad

在太多人开始提醒我 RDS 具有内置备份之前,我知道。我的用例:不仅有完整的数据库回退,我还希望能够在不影响整个数据库的情况下将单个用户的数据回滚到不同的时间段。我计划保留这些手动备份,并最终编写一个脚本来从中提取以前的用户特定数据。

我的朋友推荐了另一个选项:如果用户想要回滚,我可以从自动快照中启动一个新的 RDS,克隆我的 EC2 实例,将它们相互连接,从该快照中收集用户特定的数据,然后然后将这些更改合并回主 EC2 实例。

【问题讨论】:

【参考方案1】:

在您的 EC2 实例上设置 PostgreSQL 的 YUM 存储库:

https://yum.postgresql.org/

并安装更新的 PostgreSQL 客户端版本。

【讨论】:

以上是关于EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Amazon RDS 与使用 MySQL 的 EC2 各自的优势/限制是啥? [关闭]

无法在 AWS 上的 EC2 与 Python 中的 SSHTunnelForwarder 之间进行连接

AWS:如何将 *** 客户端连接到 RDS(*** 服务器 EC2 和 RDS 在同一个 VPC 中)

Elastic Beanstalk:在同一可用区创建 EC2 和 RDS 实例

如何使用 NodeJS 从 EC2 连接和查询 PostgreSQL RDS?

在单独的VPC中从EC2实例访问RDS