PostgreSQL构建流复制拉取日志的起始位置在哪里
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,WaitForWALToBecomeAvailable: if (!InArchiveRecovery) currentSource = XLOG_FROM_PG_WAL;
千家信息网最后更新 2026年11月03日PostgreSQL构建流复制拉取日志的起始位置在哪里
WaitForWALToBecomeAvailable: if (!InArchiveRecovery) currentSource = XLOG_FROM_PG_WAL; else if (currentSource == 0) currentSource = XLOG_FROM_ARCHIVE; for (;;){ int oldSource = currentSource; if (lastSourceFailed){ switch (currentSource){ case XLOG_FROM_ARCHIVE: case XLOG_FROM_PG_WAL://如果是备机,并且执行了promote或者存在TriggerFile文件则shutdown receive进程 if (StandbyMode && CheckForStandbyTrigger()){ ShutdownWalRcv(); return false; } if (!StandbyMode) return false; /* 构建流复制关系的位点: 1、如果上次正常关闭,不需要恢复,则从checkpoint点开始 2、否则,从恢复的结束位置开始 */ if (PrimaryConnInfo){ if (fetching_ckpt){ ptr = RedoStartLSN; tli = ControlFile->checkPointCopy.ThisTimeLineID; }else{ ptr = RecPtr; tli = tliOfPointInHistory(tliRecPtr, expectedTLEs); } curFileTLI = tli; RequestXLogStreaming(tli, ptr, PrimaryConnInfo, PrimarySlotName); receivedUpto = 0; } currentSource = XLOG_FROM_STREAM; break; ... } } ... }/*1、流复制拉取日志的起始位置是位点所在文件的文件开头2、也就是说,会以重新拉取整个xlog的文件并覆盖pg_xlog目录的相应文件3、所以,当以主shutdown,再次以备启动时,需要注意,会从新主拉取相应文件并4、覆盖本地文件,但是本地的pg_control文件并没有更新,所以读取的checkpoint位置会指向一个错误的位置5、这种情况构建流复制需要谨慎注意。*/RequestXLogStreaming: if (recptr % XLogSegSize != 0) recptr -= recptr % XLogSegSize; walrcv->receiveStart = recptr; walrcv->receiveStartTLI = tli; SendPostmasterSignal(PMSIGNAL_START_WALRECEIVER);//发起信号唤醒receiver进程
文件
位置
位点
进程
日志
起始
也就是
也就是说
信号
再次
开头
情况
所在
指向
目录
错误
更新
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技活动banner
互联网金融监管科技数据
今日互联网科技
互联网科技深圳
互联网与科技金融数据
猪兼强互联网科技
亿策互联网科技
上海致骋互联网科技
昭通云南众福互联网科技有限公司
福建科技产业互联网发展
互联网科技革命什么开始
知域互联网科技有限公司大骗子
玉溪互联网科技怎么选
互联网科技研发水平
工业互联网山东科技大学
银行科技岗属于互联网吗
产业互联网科技服务公司
江苏互联网智能科技软件
领航科技大厦互联网公司
互联网科技包装股
互联网科技股
南京欣网互联网络科技有限公司
深圳互联网科技公司
紫鲸互联网科技
朱啸虎曾投资哪些互联网科技企业
卓翼科技产业互联网合作
区块链结合互联网科技
山东有哪些互联网科技公司
中国科技和美国互联网
北京军民互联网科技公司