侵权投诉
技术:
GPU/CPU 传感器 基础元器件 网络通信 显示 交互技术 电源管理 材料 操作系统 APP 云技术 大数据 人工智能 制造 其它
应用:
可穿戴设备 智能家居 VR/AR 机器人 无人机 手机数码 汽车 平衡车/自行车 医疗健康 运动设备 美颜塑身 早教/玩具 安防监控 智能照明 其它
订阅
纠错
加入自媒体

PG的wal receiver进程如何启动

2022-07-08 13:51
yzsDBA
关注

备机的receiver进程是由恢复进程即startup进程发启。具体如下:

(1)恢复进程首先需要打开需要恢复的WAL日志文件。通过函数WaitForWALToBecomeAvailable完成。

(2)从前文中可知,日志文件读取的顺序是LOG_FROM_ARCHIVE - XLOG_FROM_PG_WAL - XLOG_FROM_STREAM。也就是先从归档中读取,归档读取失败再切换到pg_wal下,再失败则切换流复制。这3种日志源循环切换,直至找到一个可打开的日志文件

(3)备机恢复进程首先从归档目录下找需要的日志文件打开。因为备机没有转储命令,所以打开失败

(4)接着从XLOG_FROM_PG_WAL日志源也就是pg_wal目录下找需要的日志文件进行打开。先将本地日志恢复。

注:这里没有标记日志源currentSource为XLOG_FROM_PG_WAL

(5)本地日志恢复完后,再次进入WaitForWALToBecomeAvailable函数,此时需要切换到流复制日志源XLOG_FROM_STREAM。

(6)流复制发启拉取起点及时间线的设置:

        (1)读取checkpoint时就需要发启流复制,此时日志位置ptr是checkpoint的redo位置,时间线tli是checkpoint的时间线。

        (2)其他场景,日志位置ptr是本地日志恢复结束位置,时间线tli是本地日志恢复完时的时间线。

        (3)请求拉取日志位置:将ptr进行段文件对齐,也就是说从日志段文件开头进行拉取。

(7)向备机主进程发送PMSIGNAL_START_WALRECEIVER信号

(8)备机主进程接收到信号后,sigusr1_handler函数处理该信号。标记WalReceiverRequested为true,调用MaybeStartWalReceiver->StartWalReceiver最终fork出一个子进程,并标记为walreceiver,进入WalReceiverMain

       原文标题 : PG的wal receiver进程如何启动

声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

智能硬件 猎头职位 更多
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号