【0347】Postgres内核 startup XLOG 之 核实 pg_wal 、 pg_wal/archive_status (1)
文章目录
- 1. 核实 pg_wal、pg_wal/archive_status
- 1.1 核实 pg_wal
- 1.1.1 若 pg_wal 不存在
- 1.2 核实 pg_wal/archive_status
1. 核实 pg_wal、pg_wal/archive_status
postmaster 守护进程在真正进入 ServerLoop() 前,会调用 StartChildProcess() 函数启动 postmaster 辅助进程如:bgwriter、walwriter、walreceiver、bootstrapper 和 checkpointer 等。 这里首先初始化的第一个辅助进程是 StartupProcess。 该进程的主入口是 StartupProcessMain() 函数。 在该函数内部执行最重要、最为复杂的一个功能是: StartupXLOG()。
从本文开始将通过一系列的文章来讲解 Postgres内核 startup XLOG 的实现。
1.1 核实 pg_wal
Postgres内核中完成 pg_wal、pg_wal/archive_status 的核实是由函数 ValidateXLOGDirectoryStructure()
完成。
void StartupXLOG(void