Point-in-time recovery after failover

From: Dylan Luong <Dylan(dot)Luong(at)unisa(dot)edu(dot)au>
To: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Point-in-time recovery after failover
Date: 2018-03-13 11:28:26
Message-ID: a101cf4f93f043a5abf5e60675f235b7@ITUPW-EXMBOX3B.UniNet.unisa.edu.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi

We are on Postgres 9.6 and we have primary/standby wal replication setup for HA.

For PITR, we have scheduled nightly base backup and hourly archive backups on the primary server.
https://www.postgresql.org/docs/9.6/static/continuous-archiving.html

I am trying to perform a point-in-time recovery after a failover has occurred.

For example:

1 am archive backup on P1
1:30 am base backup on P1 (primary) (timeline 5)
2 am archive backup on P1
3 am archive backup on P1
Etc..
1:49 pm failover P1 crashed, S1 got promoted. (timeline 6)
2 pm archive backup on S1
3 pm archive backup on S1

For example:
At 3:15pm something got corrupted and need to restore from backup to 1:54pm.

I extracted the base backups (tar files) to the data directory and extracted the all the archive backups (P1 and S1) to the archive directory.
Followed the steps from
Created recovery.conf with the following, but the recovery only recovers, to the point before the failover and comes online.

Example of my recovery.conf :
restore_command = 'cp /pg_backup/backup/archive/%f %p'
recovery_target_time = '2018-03-13 13:54:00'
recovery_target_inclusive = 'false'
recovery_target_timeline = '6' (I also tried revovery_target_timeline = 'lastest)

Is it possible to recovery to PITR after a failover using base backup from before failover and both archive backups from P1 and S1?

Here is the log output :

018-03-13 20:46:53 ACDT [154912]: [1-1] db=,user= app=,host= LOG: database system was interrupted; last known up at 2018-03-1
3 01:31:25 ACDT
2018-03-13 20:46:53 ACDT [154912]: [2-1] db=,user= app=,host= LOG: restored log file "00000006.history" from archive
cp: cannot stat '/pg_backup/backup/archive/00000007.history': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [3-1] db=,user= app=,host= LOG: starting point-in-time recovery to 2018-03-13 13:54:00+10:3
0
2018-03-13 20:46:53 ACDT [154912]: [4-1] db=,user= app=,host= LOG: restored log file "00000006.history" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000087': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [5-1] db=,user= app=,host= LOG: restored log file "000000050000011100000087" from archive
cp: cannot stat '/pg_backup/backup/archive/00000005.history': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [6-1] db=,user= app=,host= LOG: redo starts at 111/87000028
2018-03-13 20:46:53 ACDT [154912]: [7-1] db=,user= app=,host= LOG: consistent recovery state reached at 111/870B4418
2018-03-13 20:46:53 ACDT [154908]: [3-1] db=,user= app=,host= LOG: database system is ready to accept read only connections
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000088': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [8-1] db=,user= app=,host= LOG: restored log file "000000050000011100000088" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000089': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [9-1] db=,user= app=,host= LOG: restored log file "000000050000011100000089" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000008A': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [10-1] db=,user= app=,host= LOG: restored log file "00000005000001110000008A" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000008B': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [11-1] db=,user= app=,host= LOG: restored log file "00000005000001110000008B" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000008C': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [12-1] db=,user= app=,host= LOG: restored log file "00000005000001110000008C" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000008D': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [13-1] db=,user= app=,host= LOG: restored log file "00000005000001110000008D" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000008E': No such file or directory
2018-03-13 20:46:53 ACDT [154912]: [14-1] db=,user= app=,host= LOG: restored log file "00000005000001110000008E" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000008F': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [15-1] db=,user= app=,host= LOG: restored log file "00000005000001110000008F" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000090': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [16-1] db=,user= app=,host= LOG: restored log file "000000050000011100000090" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000091': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [17-1] db=,user= app=,host= LOG: restored log file "000000050000011100000091" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000092': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [18-1] db=,user= app=,host= LOG: restored log file "000000050000011100000092" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000093': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [19-1] db=,user= app=,host= LOG: restored log file "000000050000011100000093" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000094': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [20-1] db=,user= app=,host= LOG: restored log file "000000050000011100000094" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000095': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [21-1] db=,user= app=,host= LOG: restored log file "000000050000011100000095" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000096': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [22-1] db=,user= app=,host= LOG: restored log file "000000050000011100000096" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000097': No such file or directory
2018-03-13 20:46:54 ACDT [154912]: [23-1] db=,user= app=,host= LOG: restored log file "000000050000011100000097" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000098': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [24-1] db=,user= app=,host= LOG: restored log file "000000050000011100000098" from archive
cp: cannot stat '/pg_backup/backup/archive/000000060000011100000099': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [25-1] db=,user= app=,host= LOG: restored log file "000000050000011100000099" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000009A': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [26-1] db=,user= app=,host= LOG: restored log file "00000005000001110000009A" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000009B': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [27-1] db=,user= app=,host= LOG: restored log file "00000005000001110000009B" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000009C': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [28-1] db=,user= app=,host= LOG: restored log file "00000005000001110000009C" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000009D': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [29-1] db=,user= app=,host= LOG: restored log file "00000005000001110000009D" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000009E': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [30-1] db=,user= app=,host= LOG: restored log file "00000005000001110000009E" from archive
cp: cannot stat '/pg_backup/backup/archive/00000006000001110000009F': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [31-1] db=,user= app=,host= LOG: restored log file "00000005000001110000009F" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A0': No such file or directory
2018-03-13 20:46:55 ACDT [154912]: [32-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A0" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A1': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [33-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A1" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A2': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [34-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A2" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A3': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [35-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A3" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A4': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [36-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A4" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A5': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [37-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A5" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A6': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [38-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A6" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A7': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [39-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A7" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A8': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [40-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A8" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000A9': No such file or directory
2018-03-13 20:46:56 ACDT [154912]: [41-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000A9" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000AA': No such file or directory
2018-03-13 20:46:57 ACDT [154912]: [42-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000AA" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000AB': No such file or directory
2018-03-13 20:46:57 ACDT [154912]: [43-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000AB" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000AC': No such file or directory
2018-03-13 20:46:57 ACDT [154912]: [44-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000AC" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000AD': No such file or directory
2018-03-13 20:46:57 ACDT [154912]: [45-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000AD" from archive
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000AE': No such file or directory
cp: cannot stat '/pg_backup/backup/archive/0000000500000111000000AE': No such file or directory
2018-03-13 20:46:57 ACDT [154912]: [46-1] db=,user= app=,host= LOG: redo done at 111/ADFFE160
2018-03-13 20:46:57 ACDT [154912]: [47-1] db=,user= app=,host= LOG: last completed transaction was at log time 2018-03-13 13:4
0:02.36347+10:30
cp: cannot stat '/pg_backup/backup/archive/0000000600000111000000AD': No such file or directory
2018-03-13 20:46:57 ACDT [154912]: [48-1] db=,user= app=,host= LOG: restored log file "0000000500000111000000AD" from archive
cp: cannot stat '/pg_backup/backup/archive/00000007.history': No such file or directory
2018-03-13 20:46:57 ACDT [154912]: [49-1] db=,user= app=,host= LOG: selected new timeline ID: 7
2018-03-13 20:46:57 ACDT [154912]: [50-1] db=,user= app=,host= LOG: restored log file "00000006.history" from archive
2018-03-13 20:46:57 ACDT [154912]: [51-1] db=,user= app=,host= LOG: archive recovery complete
2018-03-13 20:46:57 ACDT [154919]: [1-1] db=,user= app=,host= LOG: checkpoint starting: end-of-recovery immediate wait
2018-03-13 20:46:59 ACDT [154919]: [2-1] db=,user= app=,host= LOG: checkpoint complete: wrote 53374 buffers (0.6%); 0 transact
ion log file(s) added, 0 removed, 32 recycled; write=1.140 s, sync=0.019 s, total=1.224 s; sync files=68, longest=0.013 s, aver
age=0.000 s; distance=638968 kB, estimate=638968 kB
2018-03-13 20:46:59 ACDT [154912]: [52-1] db=,user= app=,host= LOG: MultiXact member wraparound protections are now enabled
2018-03-13 20:46:59 ACDT [154908]: [4-1] db=,user= app=,host= LOG: database system is ready to accept connections

Here is what is in the archive directory after extracting from the archive backups and after database comes online:

-rw-------. 1 postgres postgres 16777216 Mar 12 21:13 000000050000011100000075
-rw-------. 1 postgres postgres 16777216 Mar 12 21:30 000000050000011100000076
-rw-------. 1 postgres postgres 16777216 Mar 12 21:47 000000050000011100000077
-rw-------. 1 postgres postgres 16777216 Mar 12 22:05 000000050000011100000078
-rw-------. 1 postgres postgres 16777216 Mar 12 22:22 000000050000011100000079
-rw-------. 1 postgres postgres 16777216 Mar 12 22:38 00000005000001110000007A
-rw-------. 1 postgres postgres 16777216 Mar 12 22:56 00000005000001110000007B
-rw-------. 1 postgres postgres 16777216 Mar 12 23:13 00000005000001110000007C
-rw-------. 1 postgres postgres 16777216 Mar 12 23:30 00000005000001110000007D
-rw-------. 1 postgres postgres 16777216 Mar 12 23:36 00000005000001110000007E
-rw-------. 1 postgres postgres 16777216 Mar 12 23:45 00000005000001110000007F
-rw-------. 1 postgres postgres 16777216 Mar 13 00:02 000000050000011100000080
-rw-------. 1 postgres postgres 16777216 Mar 13 00:20 000000050000011100000081
-rw-------. 1 postgres postgres 16777216 Mar 13 00:36 000000050000011100000082
-rw-------. 1 postgres postgres 16777216 Mar 13 00:53 000000050000011100000083
-rw-------. 1 postgres postgres 16777216 Mar 13 01:10 000000050000011100000084
-rw-------. 1 postgres postgres 16777216 Mar 13 01:27 000000050000011100000085
-rw-------. 1 postgres postgres 16777216 Mar 13 01:30 000000050000011100000086
-rw-------. 1 postgres postgres 16777216 Mar 13 01:31 000000050000011100000087
-rw-------. 1 postgres postgres 307 Mar 13 01:31 000000050000011100000087.00000028.backup
-rw-------. 1 postgres postgres 16777216 Mar 13 01:48 000000050000011100000088
-rw-------. 1 postgres postgres 16777216 Mar 13 02:05 000000050000011100000089
-rw-------. 1 postgres postgres 16777216 Mar 13 02:22 00000005000001110000008A
-rw-------. 1 postgres postgres 16777216 Mar 13 02:39 00000005000001110000008B
-rw-------. 1 postgres postgres 16777216 Mar 13 02:55 00000005000001110000008C
-rw-------. 1 postgres postgres 16777216 Mar 13 03:12 00000005000001110000008D
-rw-------. 1 postgres postgres 16777216 Mar 13 03:30 00000005000001110000008E
-rw-------. 1 postgres postgres 16777216 Mar 13 03:47 00000005000001110000008F
-rw-------. 1 postgres postgres 16777216 Mar 13 04:04 000000050000011100000090
-rw-------. 1 postgres postgres 16777216 Mar 13 04:21 000000050000011100000091
-rw-------. 1 postgres postgres 16777216 Mar 13 04:38 000000050000011100000092
-rw-------. 1 postgres postgres 16777216 Mar 13 04:55 000000050000011100000093
-rw-------. 1 postgres postgres 16777216 Mar 13 05:12 000000050000011100000094
-rw-------. 1 postgres postgres 16777216 Mar 13 05:28 000000050000011100000095
-rw-------. 1 postgres postgres 16777216 Mar 13 05:46 000000050000011100000096
-rw-------. 1 postgres postgres 16777216 Mar 13 06:02 000000050000011100000097
-rw-------. 1 postgres postgres 16777216 Mar 13 06:19 000000050000011100000098
-rw-------. 1 postgres postgres 16777216 Mar 13 06:36 000000050000011100000099
-rw-------. 1 postgres postgres 16777216 Mar 13 06:53 00000005000001110000009A
-rw-------. 1 postgres postgres 16777216 Mar 13 07:11 00000005000001110000009B
-rw-------. 1 postgres postgres 16777216 Mar 13 07:29 00000005000001110000009C
-rw-------. 1 postgres postgres 16777216 Mar 13 07:47 00000005000001110000009D
-rw-------. 1 postgres postgres 16777216 Mar 13 08:02 00000005000001110000009E
-rw-------. 1 postgres postgres 16777216 Mar 13 08:02 00000005000001110000009F
-rw-------. 1 postgres postgres 16777216 Mar 13 08:19 0000000500000111000000A0
-rw-------. 1 postgres postgres 16777216 Mar 13 08:36 0000000500000111000000A1
-rw-------. 1 postgres postgres 16777216 Mar 13 08:55 0000000500000111000000A2
-rw-------. 1 postgres postgres 16777216 Mar 13 09:13 0000000500000111000000A3
-rw-------. 1 postgres postgres 16777216 Mar 13 09:15 0000000500000111000000A4
-rw-------. 1 postgres postgres 16777216 Mar 13 09:15 0000000500000111000000A5
-rw-------. 1 postgres postgres 16777216 Mar 13 09:17 0000000500000111000000A6
-rw-------. 1 postgres postgres 16777216 Mar 13 10:03 0000000500000111000000A7
-rw-------. 1 postgres postgres 16777216 Mar 13 10:15 0000000500000111000000A8
-rw-------. 1 postgres postgres 16777216 Mar 13 13:40 0000000500000111000000A9
-rw-------. 1 postgres postgres 16777216 Mar 13 13:40 0000000500000111000000AA
-rw-------. 1 postgres postgres 16777216 Mar 13 13:40 0000000500000111000000AB
-rw-------. 1 postgres postgres 16777216 Mar 13 13:40 0000000500000111000000AC
-rw-------. 1 postgres postgres 16777216 Mar 13 13:40 0000000500000111000000AD
-rw-------. 1 postgres postgres 16777216 Mar 13 13:48 0000000500000111000000B1.partial
-rw-------. 1 postgres postgres 16777216 Mar 13 13:49 0000000600000111000000B1
-rw-------. 1 postgres postgres 16777216 Mar 13 14:04 0000000600000111000000B2
-rw-------. 1 postgres postgres 221 Mar 13 13:48 00000006.history
-rw-------. 1 postgres postgres 16777216 Mar 13 20:48 0000000700000111000000AD
-rw-------. 1 postgres postgres 271 Mar 13 20:46 00000007.history

Dylan

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Laurenz Albe 2018-03-13 11:51:41 Re: Point-in-time recovery after failover
Previous Message Andy Halsall 2018-03-13 08:48:31 Question on corruption (PostgreSQL 9.6.1)