我需要在postgresql中执行增量备份并还原这些备份。因此,为了实现这一点,我设置了wal-归档如下。
wal_level = archive
archive_mode = on
archive_command = 'copy "%p" "C:\\Users\\Suniel\\Desktop\\archive\\%f"'
archive_timeout = 3600 //for every hour
max_wal_senders = 1然后,我得到了基地的支援。
pg_basebackup -U postgres -D C:\Users\Suniel\Desktop\Postgresql_backup\pg_basebackup -F t -x 它提供给定位置中现有数据目录的复制。
然后,我使用以下参数创建了recovery.conf文件。
recovery_target_time = '2016-07-05 04:00:00'
recovery_target_timeline = 'latest'
restore_command = 'copy "C:\\Users\\Suniel\\Desktop\\archive\\%f" "%p"'我停止了postgresql服务,并将恢复文件放在已安装postgres位置的数据目录下。
然后,我启动了postgres服务,它将recovery.conf更改为recovery.done,但当我查看表记录时,没有看到任何更改。
但是我的日志文件似乎有一些错误(我认为)。
2016-07-06 12:15:49 NPT LOG: database system was shut down at 2016-07-06 12:15:08 NPT
2016-07-06 12:15:49 NPT LOG: starting point-in-time recovery to 2016-07-05 04:00:00+05:45
2016-07-06 12:15:49 NPT LOG: consistent recovery state reached at 0/19000098
2016-07-06 12:15:49 NPT LOG: invalid record length at 0/19000098
2016-07-06 12:15:49 NPT LOG: redo is not required
2016-07-06 12:15:49 NPT LOG: selected new timeline ID: 19
2016-07-06 12:15:50 NPT LOG: archive recovery complete
2016-07-06 12:15:50 NPT LOG: MultiXact member wraparound protections are now enabled
2016-07-06 12:15:50 NPT LOG: database system is ready to accept connections
2016-07-06 12:15:50 NPT LOG: autovacuum launcher started在这些步骤中,我一定是错了。我错过了什么?我在这些程序上错了吗?
提前谢谢。
发布于 2016-07-06 17:09:46
皮特恢复向前,而不是向后。必须使用要恢复到的时间点之前的基本备份。
发布于 2016-07-06 22:03:06
PITR进程如下:
然后当你需要恢复时:
启动还原后的集群时,它将注意到存在recovery.conf文件,并尝试执行还原、读取WAL存档文件并应用更改。在某个时候,它将达到一致的状态,这是恢复过程中最重要的。
根据您所拥有的,看起来您实际上并不是在对任何其他系统进行还原,而是简单地启动已停止的集群。
https://dba.stackexchange.com/questions/143076
复制相似问题