PostgreSQL时间线(timeline)和History File
【摘要】 PostgreSQL 时间线:每当我们在数据库中完成一个事务时,所做的操作都会记录到$PGDATA/pg_wal目录下的wal日志文件中。wal日志文件一般都是下面这种格式:当一个wal日志被写满后,便会创建新的wal日志000000010000000000000002,以此类推。该文件中前8位,即:00000001表示的便是数据库的时间线。从控制文件中也可以看到:[root@VM-16-1...
PostgreSQL 时间线:
每当我们在数据库中完成一个事务时,所做的操作都会记录到$PGDATA/pg_wal目录下的wal日志文件中。
wal日志文件一般都是下面这种格式:
当一个wal日志被写满后,便会创建新的wal日志000000010000000000000002,以此类推。
该文件中前8位,即:00000001表示的便是数据库的时间线。
从控制文件中也可以看到:
[root@VM-16-10-centos pg_wal]# pg_controldata -D /data/db01/|grep Time
Latest checkpoint's TimeLineID: 1
Latest checkpoint's PrevTimeLineID: 1
Time of latest checkpoint: Wed 13 Oct 2021 09:28:15 AM CST
每当我们进行基于时间点的还原后,时间线便会加1,并创建一个名为NewTimelineID.history的新文件
recovery_target_timeline是一个参数,它可以帮助我们将集群带入历史记录中的任何时间线,只要有效的基本备份和所有存档日志都到位。
数据库状态1:
执行数据库不完全恢复到 0/07000060:
还原之后,数据库切换到了新的时间线。
除此之外还有哪些改变呢?
恢复结束是指数据库打开进行写入的点。
创建了新的时间线的 history file文件,如00000002.history。
前一个时间线上的部分WAL文件已被新时间线的ID复制。
检查点记录写在新的时间线上。
执行数据库不完全恢复到00000002000000000000000D:
在postgresql.conf文件中添加:
recovery_target_timeline = '2'
recovery_target_lsn = '0/0C000060'
select * from timeline;
tid | remarks
-----+-------------------------------
1 | This is timeline id 1
2 | This is timeline id 2 correct
history file这个文件中记录的就是这个时间线是从哪个WAL位置开始生成的。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)