PostgreSQL 在线备份恢复问题,涉及到删库操作,指定时间点恢复数据不对,可能是PG的一个bug

guoxiao_4055 2017-11-21 02:56:41
如题,最近在学习PG数据库,在测试备份恢复的时候,遇到了一些问题,还请大神们指导一下,问题详情如下:

基础环境:
postgresql 9.2 Windows 32位
场景:
数据库gx,gx下面有一张表tb1,其中有一些数据,如下图

13:28:46做的基础备份,此时含数据库gx
13:34 删除数据库gx
指定时间恢复到13:32:10,结果如下,数据没有问题

执行完全恢复,也没问题,被删除的数据库是不存在的

问题来了,当我指定时间点恢复到13:32:45的时候,这时的预期结果应该是13:32:44.202这条数据还在,gx数据库也应该还没有删除,但是配置完recovery.conf后,启动数据库,在pgAdmin中,点击gx数据库,提示数据库对应的物理文件目录不存在,类似下图错误:

pg_log里面的日志如下:

测试了好多次,都是相同的问题,恢复之前,数据库gx对应的物理文件目录是存在的,启动PG服务后,回放日志的时候,这个目录就被删除了,但是看pg_log里面的日志,根本就没有执行删除数据库gx的那个操作的日志,所以数据库应该是存在的,物理文件也是存在的。

手动将数据库gx对应的物理文件目录放到base目录下,不做其他任何操作,数据库正常,数据也正常,tb1中的数据刚好恢复到13:32:44.202那一条

猜测:PG在回放日志的时候,优先删除了数据库的物理文件,这应该是一个bug!!!

跪求大神们点拨一下小弟~~~
...全文
1030 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoxiao_4055 2017-11-21
  • 打赏
  • 举报
回复
采用的是在线备份方式,步骤如下: 备份: 1、select PG_START_BACKUP('xxx'); //开始备份 2、select PG_SWITCH_XLOG(); //切换日志 3、文件拷贝方式备份data目录 4、select PG_STOP_BACKUP(); //结束备份 5、备份WAL归档日志 模拟灾难:停服务,删除data目录 还原: 1、停止数据库服务 2、将备份的data目录拷贝到原路径 3、清空pg_xlog下面的日志 4、创建recovery.conf,指定restore_command和recovery_target_time 5、启动服务 然后,PG开始自己回放日志 最终结果如上面所说,涉及到删除数据库的操作的时候,数据恢复的不正确
guoxiao_4055 2017-11-21
  • 打赏
  • 举报
回复
在9.5版本上测试,也是同样的问题,有人遇到过类似问题吗?网上看到的指定时间点恢复的例子,都是在表内进行增删改,这个我也测试过,没有问题,就是没有涉及删除数据库的例子
guoxiao_4055 2017-11-21
  • 打赏
  • 举报
回复
第一次在CSDN上提问,跪求大神们指导~~

954

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧