PostgreSQL实战
文章平均质量分 91
PostgreSQL实战资料
auspicious航
无畏年少青春,迎风潇洒前行。
展开
-
PostgreSQL实战之物理复制和逻辑复制(八)
实际上PostgreSQL支持备库既可接收主库发送的将WAL,也支持WAL发送给其他备库,这一特性称为级联复制(Cascading Replication),本章介绍级联复制的物理架构和部署。原创 2023-05-22 16:14:36 · 975 阅读 · 0 评论 -
PostgreSQL实战之增量备份
因此,从理论上讲,如果我们有一个数据库的基础备份(也称为全备),再配合WAL日志,是可以将数据库恢复到任意时间点的。在较低的PostgreSQL版本中,使用pg_start_backup和pg_stop_backup这些低级API创建基础备份,从PostgreSQL9.1版开始有了pg_basebackup实用程序,使得创建基础备份更便捷,pg_basebackup用普通文件或创建tar包的方式进行基础备份,它在内部也是使用pg_start_backup和pg_stop_backup低级命令。原创 2023-05-04 11:33:49 · 1696 阅读 · 1 评论 -
PostgreSQL实战之备份与恢复概述
任何系统都有崩溃的可能,数据库备份工作的重要性毋庸置疑。通过备份和恢复来保护数据,避免数据丢失,在发生灾难或人为误操作的情况下,能够进行恢复是DBA的日常最重要的工作。不仅要保证能够成功备份,还要保证备份数据能够恢复,如果能在更短的时间进行恢复更是锦上添花。利用现有资源,基于现实情况考虑,制定严谨、可靠的备份策略,应对可能出现的需要恢复的情况是每个DBA都应该掌握的基本技能。炎备份与恢复的目的是为了在发生灾难或人为误操作时,能够从一份数据副本中重建数据库。原创 2023-05-04 10:39:56 · 934 阅读 · 0 评论 -
PostgreSQL实战之分区表
分区表是关系型数据库提供的一个亮点特性,比如Oracle对分区表的支持已经非常成熟,广泛使用于生产系统,PostgreSQL也支持分区表,只是道路有些曲折,早在10版本之前PostgreSQL分区表一般通过继承加触发器方式实现,这种分区方式不能算是内置分区表,而且步骤非常烦琐,PostgreSQL10版本一个重量级的新特性是支持内置分区表,在分区表方面前进了一大步,目前支持范围分区和列表分区。原创 2023-04-10 13:52:22 · 2185 阅读 · 0 评论 -
PostgreSQL实战之并行查询
介绍并行顺序扫描之前先介绍顺序扫描(sequential scan),顺序扫描通常也称之为全表扫描,全表扫描会扫描整张表数据,当表很大时,全表扫描会占用大量CPU、内存、IO资源,对数据库性能有较大影响,在OLTP事务型数据库系统中应当尽量避免。PostgreSQL10对并行扫描的支持将提升范围扫描SQL的性能,由于开启并行将消耗更多的CPU、内存、IO资源,设置并行进程数时得合理考虑,另一方面,目前PostgreSQL 10暂不支持非btree 索引类型的并行索引扫描。原创 2023-03-28 09:09:32 · 1491 阅读 · 0 评论 -
PostgreSQL实战之体系结构
PostgreSQL数据库是由一系列位于文件系统上的物理文件组成,在数据库运行过程中,通过整套高效严谨的逻辑管理这些物理文件。通常将这些物理文件称为数据库,将这些物理文件、管理这些物理文件的进程、进程管理的内存称为这个数据库的实例。在PostgreSQL的内部功能实现上,可以分为系统控制器、查询分析器、事务系统、恢复系统、文件系统这几部分。其中系统控制器负责接收外部连接请求,查询分析器对连接请求查询进行分析并生成优化后的查询解析树,从文件系统获取结果集或通过事务系统对数据做处理,并由文件系统持久化数据。原创 2023-03-14 13:59:41 · 600 阅读 · 0 评论 -
PostgreSQL实战之物理复制和逻辑复制(七)
PostgreSQL支持一主多备流复制,并且可以设置一个或多个同步备节点,PostgreSQL9.6版本时只支持基于优先级的同步备库方式,PostgreSQL10版本的synchronous_standby_names参数新增ANY选项,可以设置任意一个或多个备库为同步备库,这种基于Quorum的同步备库方式是PostgreSQL10版本的一个重要新特性,被称为同步复制优选提交。原创 2023-02-06 14:03:47 · 827 阅读 · 0 评论 -
PostgreSQL实战之物理复制和逻辑复制(六)
如果主库上由于误操作删除了表数据或删除表时,从库上的这些数据也瞬间被删除了,这时,即使对数据库做了备份,要恢复到删除前的状态也是有难度的,比如,如果使用pg_dump做了逻辑备份,通常是按天、按周、按月进行逻辑备份等,也只能恢复到最近逻辑备份时刻的数据,除非是做了基准备份并且开了归档,这时可以利用全量备份和归档恢复到删除前的状态,从而找回被删除的数据,当然这种方法维护成本较高。这样,可以在延迟时间窗口内将表test_delay的表结构和数据进行备份,再导入到主库,从而找回误删除的表。原创 2023-01-30 09:44:47 · 381 阅读 · 0 评论 -
PostgreSQL实战之物理复制和逻辑复制(五)
流复制的主库和备库角色不是静态存在的,在维护过程中可以对两者进行角色切换,例如当主库硬件故障或主库系统参数调整需要重启操作系统时,通常进行流复制主备切换,这一小节将介绍手工主备切换,主备切换的方式有两种,一种是通过创建触发器文件方式触发主备切换,另一种方式通过pg_ct| promot命令触发主备切换。目前PostgreSQL高可用方案大多基于流复制环境进行部署,流复制主备切换是PostgreSQL高可用方案的基础。原创 2023-01-09 14:04:13 · 624 阅读 · 0 评论 -
PostgreSQL实战之物理复制和逻辑复制(四)
pg_current_wal_lsn 函数显示流复制主库当前WAL日志文件写入的位置,pg_wal_Isn_diff 函数计算两个WAL日志位置之间的偏移量,返回单位为字节数,以上内容显示流复制备库WAL的 write延迟560字节,flush延迟896字节,replay延迟1272字节,这种方式有个缺点,当主库宕掉时,此方法行不通。replay_lag:主库上WAL日志落盘后等待备库接收WAL日志(这时WAL日志流已写入备库WAL日志文件,并且已应用WAL日志)并返回确认信息的时间。原创 2022-12-10 11:02:10 · 865 阅读 · 0 评论 -
PostgreSQL实战之物理复制和逻辑复制(三)
基于主键更新的场景,异步流复制和单实例写性能几乎无差异,而同步流复制相比异步流复制和单实例场景性能大幅下降,在测试过程中,我们发现同步流复制主库上出现了大量UPDATE阻塞的情况,主要由于主库上提交事务时需等待备库接收并写入WAL日志后才向主库返回确认信息,这个过程消耗了大量通信时间,此过程消耗的时间越多,主库写场景TPS越小。每次pgbench测试时间为120秒,根据以上pgbench测试脚本对单实例、异步流复制、同步流复制模式进行写压力测试,测试结果汇总如表所示。原创 2022-11-16 13:42:44 · 750 阅读 · 0 评论 -
PostgreSQL实战之物理复制和逻辑复制(二)
异步流复制指主库上提交事务时不需要等待备库接收并写入WAL日志时便返回成功,如果主库异常宕机,主库上已提交的事务可能还没来得及发送给备库,就会造成备库数据丢失,备库丢失的数据量和WAL复制延迟有关,WAL复制延迟越大,备库上丢失的数据量越大。原创 2022-11-10 15:10:54 · 732 阅读 · 0 评论 -
PostgreSQL实战之物理复制和逻辑复制(一)
PostgreSQL早在9.0版本开始支持物理复制,也可称为流复制(Streaming Replication),通过流复制技术,可以从实例级复制出一个与主库一模一样的从库(也称之为备库)。流复制同步方式有同步、异步两种,如果主节点和备节点不是很忙,通常异步模式下备库和主库的延迟时间能控制在毫秒级,将详细介绍两种同步方式的差异以及部署过程。原创 2022-11-10 14:04:21 · 2432 阅读 · 0 评论