内容简介:日志源会在XLOG_FROM_ARCHIVE->XLOG_FROM_STREAM->XLOG_FROM_ARCHIVE直接切换,只有读取过程中出错,就会切换到另外一个日志源。但实际执行过程中,XLOG_FROM_ARCHIVE出错后会到XLOG_FROM_PG_WAL读取,但是日志源的变量并不会改变。这个需要注意。static int
日志源会在XLOG_FROM_ARCHIVE->XLOG_FROM_STREAM->XLOG_FROM_ARCHIVE直接切换,只有读取过程中出错,就会切换到另外一个日志源。但实际执行过程中,XLOG_FROM_ARCHIVE出错后会到XLOG_FROM_PG_WAL读取,但是日志源的变量并不会改变。这个需要注意。
static int
XLogFileReadAnyTLI(XLogSegNo segno, int emode, int source)
{
if (expectedTLEs)
tles = expectedTLEs;
else
tles = readTimeLineHistory(recoveryTargetTLI);
/*
1、WaitForWALToBecomeAvailable调用时,source是XLOG_FROM_ARCHIVE时,会使用XLOG_FROM_ANY
2、使用XLOG_FROM_ANY,会首先从归档中读取xlog,如果open失败,则会使用XLOG_FROM_PG_WAL
3、外部日志源变量并没有切换
*/
foreach(cell, tles){
TimeLineID tli = ((TimeLineHistoryEntry *) lfirst(cell))->tli;
if (tli < curFileTLI)
break; /* don't bother looking at too-old TLIs */
if (source == XLOG_FROM_ANY || source == XLOG_FROM_ARCHIVE){
fd = XLogFileRead(segno, emode, tli,XLOG_FROM_ARCHIVE, true);
if (fd != -1){
if (!expectedTLEs)
expectedTLEs = tles;
return fd;
}
}
if (source == XLOG_FROM_ANY || source == XLOG_FROM_PG_WAL){
fd = XLogFileRead(segno, emode, tli, XLOG_FROM_PG_WAL, true);
if (fd != -1){
if (!expectedTLEs)
expectedTLEs = tles;
return fd;
}
}
}
return -1;
}
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-02/157095.htm
以上所述就是小编给大家介绍的《PostgreSQL启动恢复过程中日志源的切换》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- postgresql 主备及切换-恢复方案
- Egret场景切换管理类切换和单例使用方法
- Spring项目中使用两种方法动态切换数据源,多数据源切换
- Pear Admin Ant 1.1.0.Release 正式发布,新增布局切换、主题切换、工作空间
- MySQL -- 主从切换
- Android自动切换夜间主题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。