PostgreSQL restartpoint 原理详解

背景

大部分人对 PG 的 checkpoint 机制会熟悉一点,但是对 restartpoint 却不太熟悉,网上介绍这方面的文章也比较少。因此,本文将以 PG 14.7 的社区代码为基础,介绍 PG 中的 restartpoint 机制。

原理介绍

什么是 restartpoint

在了解 restartpoint 前,首先需要知道 checkpoint,可以参考这篇博文 https://blog.csdn.net/zxwsbg/article/details/115013885?spm=1001.2014.3001.5502

简单的介绍如下所示

  • checkpoint: 主库用的,用来定期刷脏及其他一些功能,crash 后实例自动去找最新的一个 checkpoint ,从其中记录的 redo point 的 WAL 日志位点开始向后进行 redo;
  • restartpoint:备库用的,和主库的 checkpoint 功能类似,备库的 checkpointer 进程会定期的做 restartpoint 进行刷脏,并记录一些位点,如果 crash 了直接从对应的位点开始向后进行 redo。

restartpoint 触发机制

有两种触发机制:

  1. 当距离做上一个 restartpoint 已经过去了 checkpoint_timeout 秒,并且主库又做了新的 checkpoint ,这时触发 restartpoint;
  2. 备机 WAL 大小快要超过 max_wal_size 参数设定的值;

restartpoint 做了什么

checkpoint XLOG 重做

在上一节的触发机制 1 中,主库做了一个 checkpoint(非关机时的 checkpoint ),会写一条 XLOG_CHECKPOINT_ONLINE 类型日志。
备机的 startup 进程在 xlog_redo 函数中,会针对这种类型日志做日志回放,并在 RecoveryRestartPoint 函数中保存主库该 checkpoint 的相关位点信息——checkpoint 位点、redo point 位点等。
在这里插入图片描述

CreateRestartPoint 函数

如上文所述,备机的 checkpointer 进程会定期触发 CreateRestartPoint 函数。该函数主要做了以下内容:

  1. 使用最近一次 checkpoint WAL 中的 redopoint 位点、chckpoint WAL 位点更新自身的对应位点;
  2. 使用 CheckPointGuts 进行刷脏,将内存中的信息持久化到硬盘;
  3. 更新 pg_controlfile 中的信息,并落盘;
  4. 进行 WAL 日志文件回收;
  5. 写 CSV 日志记录本次 restartpoint(如果设置了的话),更新进程的相关显示信息。

需要注意的是:restartpoint 不写 WAL

参考资料

[1] https://www.postgresql.org/docs/current/wal-configuration.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512632.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcPy】游标访问几何数据

访问质心坐标相关数据 结果展示 代码 import arcpy shppath r"C:\Users\admin\Desktop\excelfile\a2.shp" with arcpy.da.SearchCursor(shppath, ["SHAPE","SHAPEXY","SHAPETRUECENTROID","SHAPEX","SHAPEY",&q…

Oracle.xs.dll‘ for module DBD::Oracle: load_file:找不到指定的模块

安装Ora2pg时,碰到 异常现象 D:\ProgramFiles\ora2pg>ora2pg -t show_report --estimate_cost -c ora2pg_conf.dist install_driver(Oracle) failed: Cant load D:/ProgramFiles/strawberry/perl/site/lib/auto/DBD/Oracle/Oracle.xs.dll for module DBD::Oracle: load_fil…

【AI视野·今日CV 计算机视觉论文速览 第300期】Fri, 1 Mar 2024

AI视野今日CS.CV 计算机视觉论文速览 Fri, 1 Mar 2024 Totally 114 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers DistriFusion: Distributed Parallel Inference for High-Resolution Diffusion Models Authors Muyang Li, Tianle Cai, J…

Linux 学习笔记(11)

十一、 资源监控 1 、 free 内存监控 语 法&#xff1a; free [-bkmotV][-s < 间隔秒数 >] 补充说明&#xff1a; free 指令会显示内存的使用情况&#xff0c;包括实体内存&#xff0c;虚拟的交换文件内存&#xff0c;共享内存区段&#xff0c;以 及系统核心使用的…

linux kernel物理内存概述(五)

目录 概述 一、快速路径分配 1、get_page_from_freelist 2、rmqueue()函数 二、慢速路径分配 1、分配流程 三、direct_compact 概述 物理内存分配步骤 1、初始化,参数初始化 2、内存充足&#xff0c;快速分配 get_page_from_freelist 3、内存压力大&#xff0c;慢速…

大模型学习笔记五:RAG

文章目录 一、RAG介绍1)局限性2)通过检索增强生成二、RAG系统的基本搭建流程1)搭建流程简介2)文档的加载和切割3)检索引擎4)LLM接口封装5)prompt模板6)RAG Pipeline初探7)关键字检索局限性三、向量检索1)文本向量2)向量相似度计算3)向量数据库4)基于向量检索的RAG…

基于springboot+vue的医院药品管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【GIS技术】GIS在地质灾害易损性评价、危险性评估与灾后重建中的实践技术应用

地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下&#xff0c;地质灾害在世界范围内频繁发生。我国除滑坡灾害外&#xff0c;还包括崩塌、泥石流、地面沉…

分享一次性能测试过程

在企业中完成性能测试项目是一个挑战性强、技术含量高的任务。本文将分享一个公司完成高性能游戏系统的性能测试过程&#xff0c;展示如何完成一次成功的性能测试项目。 项目背景&#xff1a;这是一家游戏公司&#xff0c;推出了一款新的游戏软件&#xff0c;系统要求高性能、…

JMeter压测【简单使用】

目录 &#x1f9c2;1.性能指标 &#x1f37f;2.下载安装 &#x1f95e;3.压测 1.创建线程组 2.设置要模拟的数据 3.设置压测http 4.设置要压测的具体路径 5.查看 1.性能指标 响应时间&#xff08;Response Time: RT)响应时间指用户从客户端发起一个请求开始,到客…

SPI总线知识总结

1 SPI的时钟极性CPOL和时钟相位CPHA的设置 1.1 SPI数据传输位数 SPI传输数据过程中总是先发送或接收高字节数据&#xff0c;每个时钟周期接收器或发送器左移一位数据。对于小于16位的数据&#xff0c;在发送前必须左对齐&#xff0c;如果接收的数据小于16位&#xff0c;则采用软…

HI3516DV500 HI3516DRFCV500 HI3516DRBCV500 海思安防监控芯片 提供原厂开发包

总体介绍 Hi3516DV500是一颗面向视觉行业推出的高 清智能SoC。该芯片最高支持2路sensor输入&#xff0c;支持最高5M30fps的ISP图像处理能力&#xff0c;支持2F WDR、多级降噪、六轴防抖、多光谱融合等多种 传统图像增强和处理算法&#xff0c;支持通过AI算法对输 入图像进行实…