“TIMELINESARE THE DIVERGENT POINTS”
-bash-4.1$ initdb -D basebackup1-bash-4.1$ pg_ctl start -D u02/basebackup1
postgres=# create table timeline(tid int,remarks varchar(1000));CREATE TABLEpostgres=# insert into timelinevalues('1','This is timeline id 1');INSERT 0 1postgres=# checkpoint;CHECKPOINTpostgres=# select pg_switch_wal();pg_switch_wal---------------0/15D4B70(1 row)
-bash-4.1$ ls -rlttotal 147460-rw------- 1 postgres postgres 16777216 Nov22 13:03 000000010000000000000001-rw------- 1 postgres postgres 16777216 Nov22 13:03 000000010000000000000002-rw------- 1 postgres postgres 16777216 Nov22 13:03 000000010000000000000003-rw------- 1 postgres postgres 16777216 Nov22 13:05 000000010000000000000004-rw------- 1 postgres postgres 16777216 Nov22 13:05 000000010000000000000005-rw------- 1 postgrespostgres 337 Nov 22 13:05000000010000000000000005.00000028.backup-rw------- 1 postgres postgres 16777216 Nov22 13:06 000000010000000000000006-rw------- 1 postgres postgres 16777216 Nov22 13:06 000000010000000000000007
postgres=# insert into timelinevalues('1','This is timeline id 1 after basebackup');INSERT 0 1postgres=# checkpoint;CHECKPOINT-bash-4.1$ pg_waldump000000010000000000000008 | grep INSERTrmgr:Heap len(rec/tot): 54/ 214,tx:487, lsn: 0/08000110, prev 0/080000D8,desc: off 2 flags 0x00, blkref #0: rel 1663/13530/16384 blk 0 FPW-bash-4.1$
-bash-4.1$ ls -rlttotal 311308-rw------- 1 16777216 Nov 2213:03 000000010000000000000001-rw------- 1 16777216 Nov 2213:03 000000010000000000000002-rw------- 1 16777216 Nov 2213:03 000000010000000000000003-rw------- 1 16777216 Nov 2213:05 000000010000000000000004-rw------- 1 16777216 Nov 2213:05 000000010000000000000005-rw-------1 337 Nov 22 13:05000000010000000000000005.00000028.backup-rw------- 1 16777216 Nov 2213:06 000000010000000000000006-rw------- 1 16777216 Nov 2213:06 000000010000000000000007-rw------- 1 16777216 Nov 2213:07 000000010000000000000008-rw------- 1 16777216 Nov 2213:07 000000010000000000000009-rw------- 1 16777216 Nov 2213:09 00000001000000000000000A

-bash-4.1$ cat postgresql.conf | grep lsnrecovery_target_lsn ='0/07000060' # the WAL LSN up to whichrecovery will proceed-bash-4.1$
LOG: starting point-in-timerecovery to WAL location (LSN) "0/7000060"LOG: restored log file"000000010000000000000005" from archiveLOG: redo starts at 0/5000028LOG: consistent recovery statereached at 0/5000138LOG: database system is ready toaccept read only connectionsLOG: restored log file"000000010000000000000006" from archiveLOG: restored log file"000000010000000000000007" from archiveLOG: recovery stopping after WALlocation (LSN) "0/7000060"LOG: pausing at the end ofrecoveryHINT: Executepg_wal_replay_resume() to promote.
-rw------- 1 postgres postgres 16777216 Nov22 13:05 000000010000000000000005-rw------- 1 postgrespostgres 337 Nov 22 13:05000000010000000000000005.00000028.backup-rw------- 1 postgres postgres 16777216 Nov22 13:06 000000010000000000000006-rw------- 1 postgres postgres 16777216 Nov22 13:06 000000010000000000000007-rw------- 1 postgres postgres 16777216 Nov22 13:07 000000010000000000000008-rw------- 1 postgres postgres 16777216 Nov22 13:07 000000010000000000000009-rw------- 1 postgres postgres 16777216 Nov22 13:09 00000001000000000000000A-rw-r----- 1 postgrespostgres 33 Nov 22 13:12 00000002.history-rw-r----- 1 postgres postgres 16777216 Nov22 13:13 000000020000000000000007-rw------- 1 postgres postgres 16777216 Nov22 13:13 000000020000000000000008-rw------- 1 postgres postgres 16777216 Nov22 13:14 000000020000000000000009-rw-r----- 1 postgres postgres 16777216 Nov22 13:15 00000002000000000000000A-bash-4.1$
-bash-4.1$ cat 00000002.history1 0/70000D8 after LSN 0/7000060
1<parentTLI> 0/70000D8<switchpoint> after LSN 0/7000060<reason>parentTLI ID of the parent timelineswitchpoint XLogRecPtrof the WAL location where the switch happenedreason human-readable explanation of why the timeline was changed
postgres=# insert into timelinevalues('2','This is timeline id 2 correct');INSERT 0 1
postgres=# insert into timelinevalues('2','This is timeline id 2 wrong at 0/D000000');INSERT 0 1

LOG: database system wasinterrupted; last known up at 2020-11-22 13:05:01 ISTLOG: restored log file "00000002.history"from archivecp: cannot stat`/u02/archivelogs/00000003.history': No such file or directoryLOG: starting point-in-timerecovery to WAL location (LSN) "0/C000060"LOG: restored log file"00000002.history" from archiveLOG: restored log file "000000010000000000000005"from archiveLOG: redo starts at 0/5000028LOG: consistent recovery statereached at 0/5000138LOG: database system is ready toaccept read only connectionsLOG: restored log file"000000010000000000000006" from archiveLOG: restored log file"000000020000000000000007" from archiveLOG: restored log file"000000020000000000000008" from archiveLOG: restored log file"000000020000000000000009" from archiveLOG: restored log file"00000002000000000000000A" from archiveLOG: restored log file"00000002000000000000000B" from archiveLOG: restored log file "00000002000000000000000C"from archiveLOG: recovery stopping after WALlocation (LSN) "0/C000060"LOG: pausing at the end ofrecoveryHINT: Executepg_wal_replay_resume() to promote...LOG: redo done at 0/C000060LOG: last completed transactionwas at log time 2020-11-22 13:15:29.696929+05:30LOG: selected new timeline ID: 3
postgres=# select * from timeline;tid| remarks-----+-------------------------------1 | This is timeline id 12 | This is timeline id 2correct(2 rows)

-bash-4.1$ cat 00000003.history1 0/70000D8 after LSN 0/70000602 0/C0000D8 after LSN 0/C000060
-rw-r----- 1 postgres postgres 16777216 Nov22 13:16 00000002000000000000000F-rw-r----- 1 postgrespostgres 67 Nov 22 15:59 00000003.history-rw-r----- 1 postgres postgres 16777216 Nov22 16:05 00000003000000000000000C
文章转载自数据库架构之美,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




