关于postgresql的备份与还原,有几个问题想请教:
我们想实现的备份的目标:
除了对数据库的备份外,我们是希望当数据库出现误操作时可以进行恢复。
所以我们想对数据库进行如下的备份:
- 每小时做一个时间点,生成WAL文件,(当误操作时可还原到最近的时间点)
- 每天晚上做一次全备并将当天的WAL备份至磁带机
那我现在进行了如下的设置: - 每小时对主库进行操作:
select pg_create_restore_point('日期小时数');
checkpoint; - 每天晚上做一次pg_basebackup 并压缩后交由磁带机
现在遇到的问题:
1、我对主库的的操作select pg_create_restore_point 和 checkpoint都是成功的,并且也获取了WAL文件的名称
但是当我想在另一台独立的服务器上还原的时候,发生了问题,还原的时候,我修改了recovery.conf文件,
Standby_mode = on
recovery_target_name = 'xxxx'
但是这样设置始终不成功,它一直去读取最新的WAL文件,而不是我target_name所在的wal文件?
那如何能让postgresql还原的时候,知道使用哪个WAL文件?
是使用restore_command这个命令吗?关于这个命令,我不理解的是它仅仅是将wal cp进来吗?cp的条件是啥呢?
我还有一种理解是,是不是还原前必须将pg_xlog清空掉,只copy target_name所在的那个WAL文件?