PostgreSQL问题分析1:时间线不一致
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,一、问题:requested timeline %u does not contain minimum recovery point %X/%X on timeline %u该日志在代码中的位置如下:
千家信息网最后更新 2025年01月23日PostgreSQL问题分析1:时间线不一致
一、问题:requested timeline %u does not contain minimum recovery point %X/%X on timeline %u
该日志在代码中的位置如下:
StartupXLOG: if (!XLogRecPtrIsInvalid(ControlFile->minRecoveryPoint) && tliOfPointInHistory(ControlFile->minRecoveryPoint - 1, expectedTLEs) != ControlFile->minRecoveryPointTLI) ereport(FATAL, (errmsg("requested timeline %u does not contain minimum recovery point %X/%X on timeline %u", recoveryTargetTLI, (uint32) (ControlFile->minRecoveryPoint >> 32), (uint32) ControlFile->minRecoveryPoint, ControlFile->minRecoveryPointTLI)));
二、分析
recoveryTargetTLI这个值是什么呢?
1、改值在启动恢复过程中变化如下:
StartupXLOG: ... if (ControlFile->minRecoveryPointTLI > ControlFile->checkPointCopy.ThisTimeLineID) recoveryTargetTLI = ControlFile->minRecoveryPointTLI; else recoveryTargetTLI = ControlFile->checkPointCopy.ThisTimeLineID; readRecoveryCommandFile(); |-- for (item = head; item; item = item->next){ | ... | else if (strcmp(item->name, "recovery_target_timeline") == 0){ | rtliGiven = true; | if (strcmp(item->value, "latest") == 0) | rtli = 0; | else | rtli = (TimeLineID) strtoul(item->value, NULL, 0); | } | ... | } | ... | if (rtliGiven){ | if (rtli){ | recoveryTargetTLI = rtli; | recoveryTargetIsLatest = false; | }else{ | recoveryTargetTLI = findNewestTimeLine(recoveryTargetTLI); | recoveryTargetIsLatest = true; | } |-- }
首先,pg_control文件记录的最小恢复点时间线ControlFile->minRecoveryPointTLI会和pg_control文件记录的checkpoint的的时间线 ControlFile->checkPointCopy.ThisTimeLineID比较,recoveryTargetTLI取两者之间较大值。
然后readRecoveryCommandFile会读取recovery.cnf文件,如果是主机则没有recovery.cnf文件。recovery.cnf文件中recovery_target_timeline的值指定恢复到的时间线,如果是latest则时间线rtli为0否则为其指定值;如果rtli是指定值,则recoveryTargetTLI为指定值,否则从第一步获取的recoveryTargetTLI值+1开始,看是否有其对于的history文件,找到最大时间线对于的history文件,recoveryTargetTLI为该时间线。
文件
时间
问题
分析
最大
最小
较大
主机
之间
代码
位置
过程
变化
一致
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全宣传视频配乐
宜兴一站式软件开发系统
校园网认证服务器超时
如何管理2000台服务器
河南泽达软件开发有限公司怎么样
重庆师范大学图书馆数据库资源
创建数据库实验的结论及心得
csgo境外服务器战绩怎么查
数据中心大二层网络技术详解
明日之后有互通的服务器吗
漫画图解网络安全
jsp本地数据库验证码
边缘盒子与小型服务器区别
cuda软件开发
戴尔服务器产品线
分布式数据库怎么提升统计性能
网络安全班会 心得
专科论文可以进数据库吗
uc浏览器网络安全云在哪里
网络安全等级保护实施资质
编程语言网络安全吗
综合性事物的数据库管理系统
数据库加密要考虑的问题
数据库class 数据库表名名
云数据库供应商
中型网站服务器配置
php数据库删除数据
sata 服务器硬盘
陕西电商软件开发公司
给本地图片制作数据库