前提条件:
为了能做时间点恢复,要满足两点:
第一,做好基础备份
第二,配置好自动归档
在满足这两点之后,可以按以下步骤进行恢复
1.停止postgresql服务,把data目录和表空间目录(如果有)移到其他位置。备份这两个目录是防止万一,在恢复的过程中有可能需要。
2.把基础备份文件复制到postgresql原来的data目录和表空间目录(如果有)。
3.配置recovery.conf文件。
4.重新启动postgresql服务。
在以上的四个步骤中,有几个需要注意的问题。
在第二个步骤中,把基础备份文件复制到postgresql的data目录时,要注意owner问题,复制后要检查owner是否为postgres(这个是安装数据库时配置的用户)。另外(如果有表空间)还要检查一下data/pg_tblspc中的软连接是否正确,最后还要检查一下data目录本身的权限,要求是700,否则,会导致启动服务失败。
在配置recovery.conf时,最关键的是配置restore_command. 这个命令其实也简单,就是把归档中的日志文件复制到pg_wal目录下。和归档配置中的archive_command做相反的操作。
在配置recovery.conf中另外一个重要的事就是配置恢复到的时间点。默认情况下,恢复将会一直恢复到 WAL 日志的末尾。下面的参数可以被用来指定一个更早的停止点。在recovery_target
、recovery_target_lsn
、recovery_target_name
、recovery_target_time
和recovery_target_xid
中,最多只能使用一个,如果在配置文件中使用了多个,将使用最后一个。