当前位置: 首页 > news >正文

PostgreSQL WAL 日志发展史 - pg8

文章目录

  • 一、pg8 实现PITR
  • 二、pg8.2 全页写与温备
  • 三、pg8.3 自动刷写wal缓存

一、pg8 实现PITR

WAL的版图终于有所扩张,实现了基于时间点的还原(Point-in-time recovery)简称PITR。PITR是PostgreSQL的物理备份机制,主要流程为:开启归档;制作基础备份;在备份数据库创建recovery.conf文件并写入恢复参数;启动备份数据库。这个博客是讲历史,不讲功能的使用,感兴趣这个博客的读者相信对PITR的使用一定也是了然于胸
在这里插入图片描述
PITR的基本原理是,从基础备份的checkpoint点开始,对之后的wal日志进行重演,因此PostgreSQL需要保存基础备份之后所有的wal日志。如图中[GUC3]记录了wal日志归档相关的GUC参数。

ARCHIVE_COMMAND

这个参数为PostgreSQL提供一个wal日志归档的方法执行PITR时,需要为基础备份提供wal日志,可以指定恢复的目标停止位置,相关参数需要写入recovery.conf见[GUC4]

RESTORE_COMMAND

为备份数据库提供获取wal归档的命令

RECOVERY_TARGET_TIME

RECOVERY_TARGET_XID,RECOVERY_TARGET_INCLUSIVE,RECOVERY_TARGET_TIMELINE这是一些恢复目标相关的参数。

二、pg8.2 全页写与温备

在操作系统发生崩溃时,可能会导致PostgreSQL数据页部分写的情况,因此会出现数据不一致的情况。为了应对这一情况,PostgreSQL在一个检查点之后,每次对一个数据页进行修改时,会在wal日志中备份这个数据页(全页写)。

另外本版本有了PostgreSQL温备的概念, 温备是基于wal段级别的wal传递,后面出现的热备是基于walrecord级别的wal传递。温备的备机周期性的通过restore_command获取wal段,并执行wal重演,使得备机在不停的追赶主机的数据。

这里可以理解一下温备和PITR,事实上如果让PITR在wal重演完所有的wal日志后停下来等待后续wal的出现,这就是温备。这个版本‘停下来等待后续wal的出现’这个操作不是在内核中实现的,而是需要你把这一步集成到 restore_command 中。
在这里插入图片描述
FULL_PAGE_WRITE

这个参数的意义是使得PostgreSQl可以对抗操作系统崩溃导致导致的部分写问题。

另一方面因为在wal日志中记录了大量的数据页信息,因此会使得wal日志发生膨胀。

另外在做基础备份时执行的checkpoint是不关心FULL_PAGE_WRITE而强制执行全页写的。

ARCHIVE_TIMEOUT

因为wal归档只会对已经写完的wal段生效,因此如果有一个wal段长时间没有写满,那么这个wal段就不会归档,也因此无法在温备功能中被备机使用。

arcihve_timeout定义了一个时间段,如果一个wal段超过这个时间段还没有写满,就强制发生一次wal切换归档。

三、pg8.3 自动刷写wal缓存

8.3版本有一些小的改进和功能增强

SYNCHRONOUS_COMMIT

这个参数定义了,一个事务最终完成的条件。如果参数值为on,那么需要等到事务提交这一条wal日志同步到wal段中,事务才算完成提交。如果参数值为off,那么事务事务提交这一条wal日志刷写到wal缓存即可。在以后的版本中还会对这个参数进行升级使之对应热备的一些同步提交。

WAL_WRITE_DELAY

在说明COMMIT_DELAY 参数时讲到在没有事务提交的情况下,wal缓存只有等到写满才会刷写到磁盘。这里定义了一个时间间隔,在这个时间范围内如果没有刷写wal缓存,那么就触发一次wal缓存刷写。值得注意的是PostgreSQL通过walwrite进程来做这件事情。

ARCHIVE_MODE

这个参数增加是为了将归档模式和archive_command参数分离开。

http://www.dtcms.com/a/423376.html

相关文章:

  • 第4篇 vs2019+QT调用SDK连接海康相机显示图片
  • 高通平台WiFi学习--WLAN Offload技术
  • 微信小程序app.js中每30秒调用一次wx.getLocation
  • 遥感云平台-GEE分块下载与拼接
  • 深圳市建设监理协会网站wordpress后台接口数据
  • UNIX下C语言编程与实践10-UNIX 动态库隐式调用:编译链接配置与路径问题排查
  • 网站虚拟主持人制作建设一个网站需要条件
  • 网站建设中文百北京住房和城乡建设局门户网站
  • uni-app 模板语法修复说明
  • OpenLayers地图交互 -- 章节十八:拖拽旋转和缩放交互详解
  • 6DOF-Euler Angles
  • 【代码随想录day 29】 力扣 860.柠檬水找零
  • 医疗智能体的技术演进与路径分析:从多模态大模型到高阶综合智能体
  • 西安制作网站的电话深圳seo网站推广方案
  • 开放、协同,2025 云栖大会“操作系统开源与 AI 进化分论坛”精彩回顾
  • Codeforces Round 1050 A. Sublime Sequence
  • 欧拉路径与欧拉回路
  • 【C语言】计算两个整数二进制表示中不同位的个数
  • T5相对位置编码
  • 网站模板分类济阳做网站多少钱
  • 怎样做网站反链绵阳网站
  • Excel转PDF不分页
  • Serverless架构:无服务器计算的全面解析与实践指南
  • 记一次编译 debug 版本的 python 3.12.11 的过程
  • 需要上传视频的网站什么是html5网站
  • 深入Spring Boot的核心——配置管理(指南四)
  • 打工人日报#20250929
  • 论 AI Database
  • 免费建设网站公司哪家好如何做公司培训网站
  • 美工网站设计网站网页转小程序教程