我正在尝试将PostgreSQL数据库恢复到某个时间点。
如果只使用recovery.conf
中的restore_command
,则可以正常工作。
restore_command = 'cp /var/lib/pgsql/pg_log_archive/%f %p'
当我使用recovery_target_time参数
时,它没有恢复到目标时间。
restore_command = 'cp /var/lib/pgsql/pg_log_archive/%f %p'
recovery_target_time='2018-06-05 06:43:00.0'
以下是日志文件的内容:
2018-06-05 07:31:39.166 UTC [22512] LOG: database system was interrupted; last known up at 2018-06-05 06:35:52 UTC
2018-06-05 07:31:39.664 UTC [22512] LOG: starting point-in-time recovery to 2018-06-05 06:43:00+00
2018-06-05 07:31:39.671 UTC [22512] LOG: restored log file "00000005.history" from archive
2018-06-05 07:31:39.769 UTC [22512] LOG: restored log file "00000005000000020000008F" from archive
2018-06-05 07:31:39.816 UTC [22512] LOG: redo starts at 2/8F000028
2018-06-05 07:31:39.817 UTC [22512] LOG: consistent recovery state reached at 2/8F000130
2018-06-05 07:31:39.818 UTC [22510] LOG: database system is ready to accept read only connections
2018-06-05 07:31:39.912 UTC [22512] LOG: restored log file "000000050000000200000090" from archive
2018-06-05 07:31:39.996 UTC [22512] LOG: recovery stopping before abort of transaction 9525, time 2018-06-05 06:45:02.088502+00
2018-06-05 07:31:39.996 UTC [22512] LOG: recovery has paused
我正在尝试将数据库实例恢复到06:43:00。为什么它会恢复到06:45:02呢?
编辑:
在第一个场景中,recovery.conf转换为recovery.done,但在第二个场景中未发生此情况。
这可能的原因是什么?
recovery_target_inclusive
的设置,它会在第一笔交易达到恢复目标时停止,无论是大于还是大于等于恢复目标。 - undefined