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

标签 postgresql amazon-s3 amazon-ec2 backup amazon-rds

我正在配置备份 gem ( http://backup.github.io/backup/v4/) 以在我的 EC2 实例上运行,复制 RDS 中的 PostgreSQL 数据库,并将备份存储在新的 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 具有内置备份之前,我知道。我的用例:我还希望能够在不影响整个数据库的情况下将单个用户的数据回滚到不同的时间段,而不是只有完整的数据库回退。我计划保留这些手动备份并最终编写脚本以从中提取以前用户特定的数据。

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

最佳答案

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

https://yum.postgresql.org/

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

关于postgresql - EC2 和 RDS 之间的备份 gem pg_dump 版本不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37550001/

相关文章:

regexp_matches 在 plpgsql 函数中返回 NULL

sql - 如何调整此查询以使用窗口函数

java - 如何在 Eclipse 中减少用 JAVA 编写的 AWS Lambda 代码的大小

amazon-s3 - 支持 S3 的 Scrapy

amazon-web-services - 将 AWS EC2 实例移动到另一个账户

mysql - 将记录从 PostgreSQL 导入到 MySQL

amazon-web-services - AWS Elastic Beanstalk 应用程序和静态 Assets 部署隔离

amazon-web-services - 如何指定具有常规公共(public) IP 地址而不是 EIP 的网络接口(interface)?

node.js - 在 Linux 终端中看不到 console.log()

postgresql - 如何使用 created_at 将简单的 postgresql 表转换为超表或时间刻度数据库表进行索引