返回顶部
首页 > 资讯 > 数据库 >PostgreSQL checkpoint--shutdown
  • 151
分享到

PostgreSQL checkpoint--shutdown

2024-04-02 19:04:59 151人浏览 泡泡鱼
摘要

postgresql在shutdown时会进行checkpoint。其流程如下。 1、在主进程中,会首先注册一个信号处理函数reaper,用于向checkpoint等子进程发送信号。向checkpoint进

postgresql在shutdown时会进行checkpoint。其流程如下。

1、在主进程中,会首先注册一个信号处理函数reaper,用于向checkpoint等子进程发送信号。向checkpoint进程发送SIGUSR2信号

PostmasterMain(int arGC, char argv[])
pqsignal_no_restart(SIGCHLD, reaper); /
handle child termination */
reaper:
while ((pid = waitpid(-1, &exitstatus, WNOHANG)) > 0){
...
if (pid == CheckpointerPID){
...
SignalChildren(SIGUSR2);
}
...
}
...
PostmasterStateMachine();//向checkpoint进程发送SIGUSR2信号
|-----------------------
| if (pmState == PM_WAIT_BACKENDS){
| if (CountChildren(BACKEND_TYPE_NORMAL | BACKEND_TYPE_WORKER) == 0 &&
| StartupPID == 0 &&
| WalReceiverPID == 0 &&
| BgWriterPID == 0 &&
| (CheckpointerPID == 0 ||(!FatalError && Shutdown < ImmediateShutdown)) &&
| WalWriterPID == 0 &&
| AutoVacPID == 0){
| //pg_ctl stop -m immediate不会向checkpoint进程发送信号,即不会做checkpoint
| if (Shutdown >= ImmediateShutdown || FatalError){
| pmState = PM_WAIT_DEAD_END;
| }else{
| if (CheckpointerPID != 0){
| signal_child(CheckpointerPID, SIGUSR2);
| pmState = PM_SHUTDOWN;
| }
}
| }
|-------}
2、checkpoint进程,也会注册一个信号处理函数ReqShutdownHandler,用于处理主进程发送过来的SIGUSR2信号。接收到该信号后将shutdown_requested置为TRUE。在checkpoint进程的for循环中,如果shutdown_requested为TRUE,则进入shutdown流程:stop每个sender进程,所有sender进程stop后,根据条件进行checkpoint:CreateRestartPoint后者CreateCheckPoint

CheckpointerMain(void)->
//为信号SIGUSR2安装信号处理函数ReqShutdownHandler
pqsignal(SIGUSR2, ReqShutdownHandler); / request shutdown /
...
for (;;){
if (shutdown_requested){
/ Close down the database /
ShutdownXLOG(0, 0);
|-- WalSndInitStopping();//向每个sender进程发送信号修改到stopping状态
| WalSndWaitStopping();
| if (RecoveryInProgress())
| CreateRestartPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_IMMEDIATE);
| else{
| if (XLogArchivingActive() && XLogArcHiveCommandSet())
| RequestXLogSwitch(false);
| CreateCheckPoint(CHECKPOINT_IS_SHUTDOWN | CHECKPOINT_IMMEDIATE);
| }
|-- ...
proc_exit(0);
}
...
checkpoint
}
3、ReqShutdownHandler函数将shutdown_requested置为TRUE

ReqShutdownHandler(SIGNAL_ARGS)
{
shutdown_requested = true;
SetLatch(MyLatch);
}
 

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL checkpoint--shutdown

本文链接: https://lsjlt.com/news/43725.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PostgreSQL checkpoint--shutdown
    PostgreSQL在shutdown时会进行checkpoint。其流程如下。 1、在主进程中,会首先注册一个信号处理函数reaper,用于向checkpoint等子进程发送信号。向checkpoint进...
    99+
    2024-04-02
  • PostgreSQL备机checkpoint
      数据库异常关闭时,数据库关闭时来不及或者没机会做checkpoint,则需要从上一个一致性检查的开始恢复。     PostgreSQL备机checkpoint是不能产生checkpoint WAL的,...
    99+
    2024-04-02
  • PostgreSQL xlog格式之checkpoint
    PostgreSQL xlog记录格式分为2大部分,第一部分是XLogRecord作为通用xlog头,第二部分是数据部分:又分为XLogRecordDataHeaderShort作为记录checkpoint...
    99+
    2024-04-02
  • 怎么使用Postgresql的Checkpoint
    这篇文章主要讲解了“怎么使用Postgresql的Checkpoint”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Postgresql的Check...
    99+
    2024-04-02
  • postgresql如何检查点调整checkpoint
    小编给大家分享一下postgresql如何检查点调整checkpoint,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!postg...
    99+
    2024-04-02
  • PostgreSQL启动恢复通过checkpoint open wal文件
    StartupLOG:: ->record = ReadCheckpointRecord(xlogreader, ControlFile->checkPoint, 1, true) -...
    99+
    2024-04-02
  • PostgreSQL启动恢复读取checkpoint记录失败的条件
    1、首先读取ControlFile->checkPoint指向的checkpoint 2、如果读取失败,slave直接abort退出,master再次读取ControlFile->prevChe...
    99+
    2024-04-02
  • PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么
    这篇文章主要介绍“PostgreSQL中checkpoint_completion_target参数对checkpoint调度的影响是什么”,在日常操作中,相信很多人在PostgreSQL中checkpoi...
    99+
    2024-04-02
  • 怎么理解checkpoint cnt和checkpoint scn
    这篇文章将为大家详细讲解有关怎么理解checkpoint cnt和checkpoint scn,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。[说明]模仿eygle大师的一篇文章,自己动手做了...
    99+
    2023-06-06
  • PostgreSQL checkpoint中用于刷一个脏page的函数是什么
    这篇文章主要讲解了“PostgreSQL checkpoint中用于刷一个脏page的函数是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Postgre...
    99+
    2024-04-02
  • Checkpoint与state的关系以及Checkpoint的执行机制
    这篇文章主要讲解了“Checkpoint与state的关系以及Checkpoint的执行机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Checkpoint与state的关系以及Check...
    99+
    2023-06-02
  • oracle之检查点(Checkpoint)
    检查点是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件。检查点分为三类:1)局部检查点:单个实例执行数据库所有数据文件的一个检查点操作,属于此实例的全部脏缓存区写入数据文件。触发命...
    99+
    2024-04-02
  • 什么是checkpoint技术
    这篇文章主要讲解了“什么是checkpoint技术”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“什么是checkpoint技术”吧!   ...
    99+
    2024-04-02
  • 怎么理解Oracle checkpoint
    本篇内容主要讲解“怎么理解Oracle checkpoint”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Oracle checkpoint”吧!che...
    99+
    2024-04-02
  • mysql checkpoint有什么作用
    本篇内容主要讲解“mysql checkpoint有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql checkpoint有什么作用”吧!che...
    99+
    2024-04-02
  • checkpoint机制如何实现
    这篇文章主要讲解了“checkpoint机制如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“checkpoint机制如何实现”吧!checkpoint 机制的具体实现我们都知道为了优化...
    99+
    2023-07-05
  • linux shutdown命令详解
    shutdown命令用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。 语法 shutdown(选项)(参数) 选项 -c:当执行“shutdo...
    99+
    2022-06-04
    详解 命令 linux
  • InnoDB的Checkpoint技术是什么
    InnoDB的Checkpoint技术是什么?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!一句话概括,Checkpoint...
    99+
    2024-04-02
  • SHUTDOWN: waiting for active calls to complete
    关闭数据库,alert日志:Active call for process 36176016 user 'oracle' program 'oracle@aix'Active call for proces...
    99+
    2024-04-02
  • mysqld: Sort aborted: Server shutdown in progress
    上午发现mysql数据库errlog里面有报错: [ERROR] /usr/sbin/mysqld: Sort aborted: Server shutdown in progress 相关...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作