0. 关于checkpointer
- 检查指针是Postgres 9.2的新特性。它处理所有检查点。自上次检查点以来,检查点在经过一定时间后自动分发,并且还可以发出信号来执行请求的检查点。(GUC参数要求每隔这么多WAL段就有一个检查点,这是通过后端在填充WAL段时发出信号来实现的; checkpointer本身并不监视条件。)
- 一旦启动子进程完成,或者如果我们正在进行存档恢复,则在恢复开始时,postmaster就会启动checkpointer。它一直存活,直到postmaster命令它终止。正常的终止由
SIGUSR2
完成,它指示checkpointer执行一个关闭检查点,然后exit(0)
。(所有后端必须在SIGUSR2
发布之前停止!)紧急终止是通过SIGQUIT
; 与任何后端一样,checkpointer将在SIGQUIT
时中止并退出。 - 如果checkpointer意外退出,postmaster将其视为后端崩溃:共享内存可能损坏,因此应该通过
SIGQUIT
杀死剩余的后端,然后开始恢复周期。(即使共享内存没有损坏,我们也会丢失关于下一个检查点需要对哪些文件进行fsync
的信息,因此需要强制重新启动系统。)
1. 前言
在