首页 > 数据库 >POSTGRESQL PG15关于归档的新模式

POSTGRESQL PG15关于归档的新模式

时间:2023-05-25 09:13:52浏览次数:55  
标签:POSTGRESQL 存档 basic PG15 模块 归档 archive

开头还是介绍一下群,如果感兴趣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,来解决归档问题。

 

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

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

 

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

 

 

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

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

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

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

 

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

标签:POSTGRESQL,存档,basic,PG15,模块,归档,archive
From: https://www.cnblogs.com/chuangsi/p/17430151.html

相关文章

  • postgresql docker启动显示未初始化密码
    错误信息:docker-compose:postgres|错误:数据库未初始化,未指定超级用户密码 docker-compose.yml指定版本号:3.1,之前是2.4怀疑是版本问题,之前postgres是9.6,现在用的最新版本 ......
  • oracle归档命令整理
    问题背景:一般处理数据库问题中,归档问题遇到比较频繁,如归档满了是否可以清理,是否进行了备份,问题是否会复发,如何诊断处理方案:查看数据库备份情况,如有备份则可清理,若无备份可及时备份进行处理colSTART_TIMEfora30colEND_TIMEfora30colstatusfora10selectSESSION_KEY,INPU......
  • 使用docker安装postgresql
    在Docker中安装PostgreSQL的详细步骤:首先,确保你已经安装了Docker。如果没有,请按照Docker官方文档的说明进行安装。打开终端并输入以下命令来搜索PostgreSQL映像:dockersearchpostgres选择一个适合你需要的映像并使用以下命令下载它:dockerpull[postgres-image-name]其中......
  • PostgreSQL集群运维案例之---构建recpmgr集群管理
    案例说明:在构建流复制集群后,可以通过repmgr实现集群的管理,并通过repmgr实现集群节点状态监控、switchover、failover切换等管理。数据库版本:PostgreSQL14集群节点信息:[root@node101~]#cat/etc/hosts192.168.1.101node101;primary节点192.168.1.102node102......
  • PostgreSQL技术大讲堂 - 第16讲:元组(行)结构与dml操作
     PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUGPG技术大讲堂。Part16:元组(行)结构与dml操作内容1:PostgreSQL行结构内容2:DML......
  • postgresql关键字包含order、account,不能用作表名
    原先项目数据源为mysql,操作的业务表表名有order,account,将数据库迁移到postgresql且配置里更改数据源为postgresql(对该数据源了解不深)后调用提示如下的异常,给的提示很模糊,如果通过搜索引擎估计得很久才能定位到原因,通过询问AI可以得到准确的原因解释及建议。 ......
  • postgresql 自动创建分区表
    PostgreSQL中通过继承,可以支持基本的表分区功能,比如按时间,每月创建一个表分区,数据记录到对应分区中。按照官方文档的操作,创建子表和index、修改trigger等工作都必须DBA定期去手动执行,不能实现自动化,非常不方便。尝试着通过在plpgsql代码中使用动态SQL,将大表分区的运维操作实现......
  • PostgreSQL一站式插件推荐 -- pg_enterprise_views
      近日发现PG官方插件列表中新收录了一款插件pg_enterprise_views,因为官方已经数年未添新的插件了很是新奇,找了台设备测试过后果断上了生产,得空分享给大家。  该插件提供了数十张系统表及一个GUI工具,用以监控从操作系统到数据库方方面面的性能情况,并支持对任意时段历史......
  • Postgresql 扩展函数记录
    启用函数createextensiontablefunc;--tablefunc扩展模块包含一系列返回记录表的函数。createextension"uuid-ossp";--uuid扩展函数createextensionifnotexists"uuid-ossp"; 卸载函数dropextensiontablefunc;dropextension"uuid-ossp";......
  • python 操作 PostgreSQL 数据库,线程并行修改 5w 条数据,性能优化
    python操作PostgreSQL数据库,线程并行修改5w条数据,性能优化110 娃哈哈店长的个人博客 /  433 /  0 / 创建于 3年前  获取新xls表中的所有数据并整理为列表形式返回其实修改的代码量不大,但是要考虑保留之前我们用的函数和方法还要继续能使用。excel2......