PostgreSQL启动恢复过程中日志源的切换

栏目: 数据库 · 发布时间: 5年前

内容简介:日志源会在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读取,但是日志源的变量并不会改变。这个需要注意。

PostgreSQL启动恢复过程中日志源的切换

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启动恢复过程中日志源的切换》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

怎样解题

怎样解题

[美] G. 波利亚 / 涂泓、冯承天 / 上海科技教育出版社 / 2002-6 / 16.00元

《怎样解题:数学教学法的新面貌》是数学家波利亚论述中学数学教学法的普及名著,对数学教育产生了深刻的影响。波利亚认为中学数学教育的根本宗旨是教会年轻人思考,他把“解题”作为培养学生数学才能和教会他们思考的一种手段和途径。这本书是他专门研究解题的思维过程后的结晶。全书的核心是他分解解题的思维过程得到的一张“怎样解题”表。作者在书中引导学生按照“表”中的问题和建议思考问题,探索解题途径,进而逐步掌握解题......一起来看看 《怎样解题》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具