阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

PostgreSQL启动恢复期间,恢复到的时间线的确定

113次阅读
没有评论

共计 1052 个字符,预计需要花费 3 分钟才能阅读完成。

1、启动恢复时,确定恢复到的时间线 recoveryTargetTLI

 1)归档恢复点比 checkpoint 中记录的时间线大,那么选择归档恢复点作为目标时间线

 2)否则,checkpoint 记录中的时间线作为目标时间线

StartupXLOG->
 if (ControlFile->minRecoveryPointTLI >
  ControlFile->checkPointCopy.ThisTimeLineID)
  recoveryTargetTLI = ControlFile->minRecoveryPointTLI;
 else
  recoveryTargetTLI = ControlFile->checkPointCopy.ThisTimeLineID;
 …

2、接着从 recovery.conf 文件中读取

 1)若设置了 recovery_target_timeline 值,并且设为 latest,那么 history 列表最大的时间线即为目标时间线

 2)否则是 recovery.conf 文件中设置的时间线值

 3)若没有设置 recovery_target_timeline 值,则目标时间线为第一步中的值

StartupXLOG->readRecoveryCommandFile()->
 for (item = head; item; item = item->next){
  if (strcmp(item->name, “restore_command”) == 0){
   …
  }else if …
  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);
  }else if…
 }
 if (rtliGiven){
  if (rtli){
   recoveryTargetTLI = rtli;
   recoveryTargetIsLatest = false;
  }else{
   /* We start the “latest” search from pg_control’s timeline */
   recoveryTargetTLI = findNewestTimeLine(recoveryTargetTLI);
   recoveryTargetIsLatest = true;
  }
 }

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1052字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中