PG的wal receiver进程如何启动

简介: PG的wal receiver进程如何启动

备机的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目录下找需要的日志文件进行打开。先将本地日志恢复。

注:这里没有标记日志源currentSourceXLOG_FROM_PG_WAL

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

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

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

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

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

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

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
关系型数据库 数据库 PostgreSQL
pg 进程
BGW
97 0
|
关系型数据库 数据库 PostgreSQL
pg 进程
postmaster
89 0
|
关系型数据库
pg 进程
ps -ef | grep postgres
85 0
|
SQL 关系型数据库 数据库
PG 数据库锁表问题解决方案:查询pg数据库锁表的语句和进程,通过进程pid杀掉进程进行批量表解锁
PG 数据库锁表问题解决方案:查询pg数据库锁表的语句和进程,通过进程pid杀掉进程进行批量表解锁
752 0
PG 数据库锁表问题解决方案:查询pg数据库锁表的语句和进程,通过进程pid杀掉进程进行批量表解锁
|
3天前
|
监控 Linux Shell
|
6天前
|
Linux Shell
【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
【Linux】解决:为什么重复创建同一个【进程pid会变化,而ppid父进程id不变?】
|
7天前
|
存储 Web App开发 运维
|
8天前
|
弹性计算 运维 Shell
统计Linux 进程相关数量信息
【4月更文挑战第29天】
10 0
|
8天前
|
弹性计算 运维 Shell
统计 Linux 进程相关数量信息
【4月更文挑战第29天】
7 1
|
9天前
|
监控 Linux 开发者
【专栏】如何在 Linux 命令行中终止进程?
【4月更文挑战第28天】在Linux系统管理中,终止不响应或资源消耗大的进程至关重要。本文介绍了如何查找、终止和监控进程。使用`ps`和`grep`组合查找特定进程,或通过`pgrep`获取PID。使用`kill`命令(默认发送TERM信号)终止进程,如需强制终止,可使用`kill -9`发送`SIGKILL`信号。监控进程可借助`ps`、`top`、`htop`及`watch`命令。理解这些技能将有助于更有效地管理Linux进程。