POSTGRESQL PG15关于归档的新模式

news/2024/12/29 8:01:22/

8cf32280317f81865a29b8adc7b0d576.png

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到3群(共810人左右 1 + 2 + 3),这里需要注意,如果想和 瑞典马工进行面对面的交流的同学,可以单独提出申请加入 3群,否则如2群。

正文

相信不少人对于PG的归档方式进行过吐槽,比如为什么用CP 命令是PG默认归档的方式等等这样的问题。主要被吐槽的问题

效率低下:传统的 PostgreSQL 使用 shell 命令进行 WAL(Write Ahead Log)归档,这导致了大量不必要的操作和低效性。

文档误导:PostgreSQL 文档给出一个将 test 和 cp 命令结合在一起的不安全命令作为示例,许多用户照搬这种方法,导致归档问题的发生。

备份工具:在过去,用户需要依赖第三方备份工具,如 PgBackRest,来解决归档问题。

f194f50304130a0603a39238246d3172.png

那么PG15 给我们带来了什么,带来了基于归档方式的变化,PostgreSQL 为连续归档提供了创建自定义模块的基础设施,自定义归档模块会更加稳定和高效。

当配置了自定义archive_library时,PostgreSQL 将完成的 WAL 文件提交给该模块,服务器将避免回收或删除这些 WAL 文件,直到模块指示文件已成功归档。这里PG15提供了一个basic_archive 的基础归档模块,通过ba 可以简单的将需要归档的日志进行数据的迁移。

ae86e75ac13e3ff729a5018c7fea8b02.png

根据官方文档,我们可以通过以下的几部来配置一个basic_archive 的归档的工作。

0427971b4e86422b8f90dc7126f94ce5.png

025135c6d8664df20108df5637d22921.png

7e768b5e6c8a8c9b2ba85341bc59566f.png

41d135b3fe1748019f40e07ae14ec337.png

03f94dd9a7eb53c6a6a82cf3ad0f0220.png

可以看到,我们的归档在通过base_archive 的方式进行归档后,我们并未在archive_command 中进行归档的命令的设置,而是通过basic_archive模块来进行归档。这样的归档方式的优势是

它创建一个临时文件,并在目标位置将其 fsync 并持久地移动到最终的存档文件副本中。这种持久性是 cp 无法提供的。这大大降低了存档目标中损坏文件导致存档失败,甚至有时会导致数据库可恢复性的可能性。

basic_archive 的另一个重要功能优势是,当源(pg_wal)和存档目标中存在相同文件时,它具有内置功能来比较两者。它比较文件的内容并验证它们完全相同,然后向存档器报告“成功”,以便存档进程可以继续处理下一个 WAL 分段。这也降低了存档失败的机会。因为如果文件由模块存档,但在记录之前服务器崩溃,PostgreSQL将尝试再次存档相同的 WAL 分段。如果文件已复制并具有相同的内容,新的 basic_archive 模块示例会在第二次尝试时静默成功。

另外有些同学提出在加载时报错,这里需要注意,basic_archive 是在需要进行编译的,否则是无法进行加载的,所有必须对contrib 的模块的进行编译和安装,才能使用这个功能。

88db225e6f93eb77daac9069d498c364.png

当然很多人可能认为,这个方式和之前的方式比较并未有很大的改变,但是这是一个好的开始,基于PG15对于归档模块的注意和改变,未来可能有新的模块来参与到PG的归档工作中,或许有更强大的第三方的公司来开发归档模块,这对于一些 企业版的PG 厂商来说也是一个好的事情,我们都希望PG 数据库的功能越来越完善,越来越稳定。

dc4b5712b8f8cbc335222566e2744a36.png


http://www.ppmy.cn/news/82392.html

相关文章

配置Kubelet的垃圾回收(K8S镜像回收)

简介 Kubelet的垃圾回收功能可以清理不再使用的容器和镜像,kubelet对容器进行垃圾回收的频率是每分钟一次,对镜像进行垃圾回收的频率是每五分钟一次。 不推荐使用外部的垃圾回收工具,因为这些工具有可能会删除 kubelet 仍然需要的容器或者镜…

MSP432学习笔记6:中断优先级管理

所用型号:MSP432P401R 今日继续我的MSP432电赛速通之路。 主要学习的是:中断优先级管理、软件挂起中断、屏蔽中断优先级 目录 MSP432具有8级可编程的中断优先级。 中断优先级管理库函数: 软件挂起中断: 屏蔽中断优先级&#…

Spring Boot 中如何使用 Spring Data MongoDB 来访问 MongoDB

Spring Boot 中如何使用 Spring Data MongoDB 来访问 MongoDB 简介 MongoDB 是一个流行的 NoSQL 数据库,其以灵活的数据模型和可扩展性而闻名。Spring Data MongoDB 是 Spring 框架的一个子项目,它提供了一种简单的方式来使用 MongoDB 数据库。在本文中…

14 媒体存储的封装2

媒体存储实现类 媒体存储实现类派生于媒体存储接口类,也派生于线程基类。媒体存储实现类的头文件如下: #pragma once#include <HP_Base/HP_BaseThread.h> #include <HP_Base/HP_Mutex.h> #include <HP_Base/HP_FifoMemPool.h>#include "HP_MediaStor…

AI绘画Stable Diffusion安装、使用教程 整合包下载

安装Stable Diffusion webui 效果图&#xff1a; 1.准备工作 在下载 AI 绘画工具前&#xff0c;电脑上需要提前下载一些运行的环境 1.下载python、git 首先本地机器最好是英伟达的 N 卡&#xff0c;并且至少需要 4GB 显存才能在本地运行&#xff0c;当然&#xff0c;A 卡也是…

企业工程项目管理系统源码-全面的工程项目管理

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈&#xff0c;内卷严重&#xff0c…

【SA8295P 源码分析】00 - 系列文章链接汇总

【SA8295P 源码分析】00 - 系列文章链接汇总 2023年5月25日 从今天开始,正式开始全力分析SA8295P 源码,主要是利用工作之余的时间来分析代码,争取把这个平台吃透。 本系列文章,是基于高通拉下来的最初始的源码进行分析,不会也不敢涉及公司具体项目。 老规矩,大家有啥遇到…

机器学习笔记 - 机器视觉光源选型参考

目前没有一个通用的机器视觉照明系统,可以应对不同的检测要求,因此针对每个特定的案例,都需要设计适应的照明装置,以达到最佳效果。机器视觉光源有多种类别,每种类别的光源又有多种型号,在确定类别之后还要进行选型,下面就介绍不同类别光源的选型方法。 一、不同颜色光源…