我正在配置备份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升级到匹配版本。
这是我的备份宝石模型配置,如果有帮助:https://gist.github.com/anonymous/35f6f9e81846f53693fb03662c2192ad
在太多人开始提醒我RDS有内置备份之前,我知道。我的用例:我还希望能够将个人用户的数据回滚到不同的时间段而不影响整个数据库,而不仅仅是拥有完整的数据库回退。我计划保留这些手动备份,并最终编写脚本以从中提取以前的用户特定数据。
我的朋友推荐了另一个选项:如果用户想要回滚,我可以从自动快照启动新的RDS,克隆我的EC2实例,将它们相互连接,从该快照收集用户特定数据,以及然后将这些更改合并回主EC2实例。