pgsql 时间线

PGSql时间线

在pgsql中什么是时间线?
时间线主要是为了解决wal文件覆盖的问题。
如果没有时间线会有什么问题?
举个例子:
假如在周一9:00删除了一个表,周三发现删错了,这时候要做时间点恢复。周三下午3点通过基础备份和WAL文件,把数据库恢复到了周一8:50这个时刻。恢复后的数据库继续运行,到周五,发现删除那个表没有必要恢复,想再把数据库恢复到周三下午2:30的时间点。如果在周三下午3点做了基础备份,可以直接恢复,如果没有做基础备份,想通过WAL日志来恢复,没有时间线,就存在问题。没有时间线,因为数据库一直在运行,会产生新的WAL文件,会把原来的覆盖掉。
再来看一下wal文件命名规则就更容易理解了
文件名字以十六进制表示且分为三个部分,第一部分是时间线标识(timelineid),一般保持该部分值不变。第二部分是文件标识ID(fileid,seg)第三部分是区段ID(seg)且值不能超过255,即0xFF。

00000001 00000000 000000AB      

时间线:英文为timeline,是以1开始的递增数字,如1,2,3…
LogId:32bit长的一个数字,是以0开始递增的数字,如0,1,2,3…
LogSeg:32bit长的一个数字,是以0开始递增的数字,如0,1,2,3…

无论何时当一次归档恢复完成,一个新的时间线被创建来标识恢复之后生成的WAL记录序列。时间线ID号是WAL段文件名的一部分,因此一个新的时间线不会重写由之前的时间线生成的WAL数据。
考虑到你不太确定需要恢复到哪个时间点的情况,你可能不得不做多次时间点恢复尝试和错误,直到最终找到从旧历史中分支出去的最佳位置。如果没有时间线,该处理将会很快生成一堆不可管理的混乱。而有了时间线,你可以恢复到任何之前的状态,包括早先被你放弃的时间线分支中的状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值