阿里云RDS for Postgresql 艰难恢复数据记录


屁民瑞威原以为aliyun的RDS for PostgreSQL可以像RDS for Mysql一样在线备份恢复,可是当真正需要恢复的时候才发现是自己太天真了。好吧,说正事。

 

一、总体背景

阿里云确实提供了不少技术方便运维工作,所以屁民瑞威把某网站放到了他们的云平台上,使用了SLB+ECS+RDS+OSC+OSS这些产品。本以为不同与自建数据库,RDS能够提供更好了运维机制,所以没有在ECS上搭建数据库,正好阿里云开放了PostgreSQL,所以购买了RDS for PostgreSQL作为后端存储。

二、案例背景

2015-07-22晚上更新某数据表时,只针对子查询做了测试,还没有完全测试就启动了整个脚本,duang!整个表数据被清空了。

想到RDS不是可以恢复到7天内任意时间点嘛,所以登录阿里云管理控制台,找遍了备份与恢复,却没有发现如何恢复的链接。这个时候已经22点了,试试发了个工单,没有想到阿里云的同学还是蛮辛苦的,这么晚了不到10分钟就回了个消息:

在左侧栏备份与恢复页面,可以看到当前实例的备份文件列表。需要时,可以下载备份,恢复数据。目前,RDS For PostgreSQL暂支持直接到临时实例的恢复。归档列表页面,则可以看到实例产生的归档列表。

可惜,屁民瑞威还是没有看到在哪里,见下图:

阿里云RDS for PostgreSQL备份与恢复界面

阿里云RDS for PostgreSQL备份与恢复界面

考虑到该表是历史数据,对整个网站影响并不打,所以就把当前表的数据导入到历史表,充当一点历史数据,等到23日在继续吧。

23日一早重新发了工单给阿里云,询问:

下载备份,需要怎么样的配置调整,我下载下来与本地的配置有区别;临时实例的恢复?没有看到建立临时实例的地方。

回复:

您好
目前PG的功能还没有mysql一样多
PG本身是做了高可用的
但是还没有提供临时实例的功能
备份恢复需要您自行下载本地恢复

果然,又成小白鼠了。

三、解决方案

既然需要下载备份,那就下载备份吧。下载备份列表中的文件,打开一看,原来是整个数据目录。

阿里云RDS for PostgreSQL备份文件

阿里云RDS for PostgreSQL备份文件

看来需要新建一个服务才行,参见下来代码

看来是RDS自己的东西本地没有,结果报错。打开postgresql.conf,删除提示中rds相关的配置。重新运行,有报错

看来这样不行了,需要修改的地方太多。搜了一下阿里云RDS for PostgreSQL使用的版本,下载了一个Linux版本的postgresql-9.4.1-3-linux-x64.run,在linux系统下安装。

最终解决步骤:

1、下载Linux版本的postgresql-9.4.1-3-linux-x64.run并安装。

2、删除原有的data目录,把从阿里云下载的data放到原来的目录。

3、删除postgresql.conf中rds相关配置。

4、启动并使用你在RDS登录的用户名和密码。

5、这下就可以在本地正常连接到你备份的那个数据节点,然后dump出sql脚本,后面的就看自己处理了。

 

后记

虽然恢复了前面的数据,但是阿里云如果不把PostgreSQL这块加强,估计会让很多用户放弃。

 

by 屁民瑞威

2015-07-23

 

版权声明:本文《阿里云RDS for Postgresql 艰难恢复数据记录》为【屁民部落】原创/翻译文章,转载时请注明出处!
本文地址:http://pimin.net/archives/530

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">