合 PG中的时间线Timeline
Tags: PG备份恢复PITR不完全恢复基于时间点的恢复Timeline时间线
时间线Timeline概述
为了区分因数据库恢复造成的不同时间段的wal日志而产生的时间记录称为时间线(timeline)。当归档文件恢复完成后,会创建一个新的时间线用来区别新生成的WAL记录。
每当我们在数据库中完成一个事务时,所做的操作都会记录到$PGDATA/pg_wal目录下的wal日志文件中。WAL文件名由时间线和日志序号组成。
wal日志文件一般都是下面这种格式:
1 | 000000010000000000000001 |
当一个wal日志被写满后,便会创建新的wal日志000000010000000000000002,以此类推。
该文件中前8位,即:00000001表示的便是数据库的时间线。
1 2 3 4 5 6 7 8 9 10 | [postgres@xmmup archive]$ ll total 4 lrwxrwxrwx. 1 postgres postgres 69 Feb 17 22:51 000000010000000000000001 lrwxrwxrwx. 1 postgres postgres 69 Feb 17 22:51 000000010000000000000002 lrwxrwxrwx. 1 postgres postgres 69 Feb 17 22:51 000000010000000000000003 [postgres@xmmup archive]$ [postgres@xmmup archive]$ pg_controldata | grep TimeLineID Latest checkpoint's TimeLineID: 2 Latest checkpoint's PrevTimeLineID: 2 [postgres@xmmup archive]$ |
时间线ID号是WAL文件名组成之一,因此一个新的时间线不会覆盖由以前的时间线生成的WAL。