
PostgreSQL数据库学习资料
文章平均质量分 54
PostgreSQL数据库相关资料
auspicious航
无畏年少青春,迎风潇洒前行。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何实现PostgreSQL的高可用性,包括主流的复制方案、负载均衡方法以及故障转移流程?
PostgreSQL高可用方案摘要 PostgreSQL高可用性(HA)实现需要结合复制技术、故障转移和负载均衡。核心方案包括: 数据复制:物理流复制(PSR)是基础,支持同步/异步模式,确保数据一致性;逻辑复制适用于特定场景。 故障转移:通过Patroni等工具自动检测故障并切换主库,配合etcd等分布式存储防止脑裂。 连接路由:使用HAProxy、Pgpool-II或云负载均衡器实现读写分离和主库连接路由。 推荐架构:Patroni+PSR+HAProxy经典组合,或K8s原生方案,云服务则推荐托管数据原创 2025-08-12 10:47:24 · 607 阅读 · 0 评论 -
PostgreSQL的锁机制
PostgreSQL锁机制是保证数据一致性和并发控制的关键组件。本文系统介绍了PostgreSQL的锁核心概念、粒度层级(表级锁、行级锁等)、主要锁模式及其冲突关系,深入分析了死锁产生条件和解决方案。还提供了监控锁问题的实用SQL查询和诊断工具,以及优化锁性能的最佳实践(如短事务原则、索引优化等)。通过典型场景案例说明常见锁冲突问题及其解决方法,帮助开发者深入理解并有效管理PostgreSQL中的锁机制,解决90%以上的并发控制问题。全文以表格对比和示例代码形式呈现,兼具技术深度和实用价值。原创 2025-08-07 09:10:39 · 290 阅读 · 0 评论 -
PostgreSQL 中 pg_wal文件过多过大的清理方法及关键注意事项的总结
针对 PostgreSQL 中 `pg_wal` 文件过多过大的清理方法及关键注意事项的总结原创 2025-08-07 09:09:03 · 475 阅读 · 0 评论 -
PostgreSQL 高可用与负载均衡
摘要:PostgreSQL高可用(HA)解决方案旨在实现最小化停机时间、数据零丢失和自动故障转移。主流方案包括基于流复制的同步/异步复制、自动故障转移工具(如Patroni、repmgr)、共享存储方案等。负载均衡可通过连接池级(PgBouncer)或应用层(HAProxy)实现,并结合服务发现动态扩容。关键架构通常包含VIP漂移和监控,确保故障转移流程顺畅。数据一致性通过同步复制和Quorum机制保障,云原生方案则依托Kubernetes Operator。灾难恢复依赖物理/逻辑备份和跨地域复制。监控指标原创 2025-08-06 15:53:40 · 929 阅读 · 2 评论 -
PostgreSQL函数的创建与使用指南
摘要:PostgreSQL函数是存储在数据库中的可重用代码块,提供业务逻辑封装、代码复用和性能优化。本文详细介绍了函数创建语法、参数类型(输入/输出/可变)、返回值选项(基础类型/结果集/表)以及函数体结构。提供了计算阶乘、返回员工信息等实用示例,并涵盖函数管理操作(查看/修改/删除)和权限控制。使用注意事项包括性能优化、事务处理、参数安全性和调试技巧,建议保持函数功能单一并添加适当注释。原创 2025-07-15 10:35:45 · 465 阅读 · 0 评论 -
PostgreSQL集群篇——PostgreSQL的配置文件解析
PostgreSQL 配置摘要 本文档详细介绍了PostgreSQL数据库的配置文件选项,主要包括以下核心配置: 基础文件位置 - 数据目录、认证文件路径等 连接认证 - 监听地址、端口、最大连接数、SSL设置等 资源使用 - 内存分配、磁盘I/O、并行处理参数 预写式日志 - WAL级别、同步设置、归档参数 复制功能 - 主从复制、流复制相关配置 查询优化 - 规划器方法、代价常量、统计收集 日志记录 - 日志级别、格式、保存策略 自动清理 - 自动VACUUM配置参数 客户端默认值 - 隔离级别、时区、原创 2025-06-20 17:29:19 · 403 阅读 · 0 评论 -
PostgreSQL 常用SQL操作命令
【代码】PostgreSQL 常用SQL操作命令。原创 2025-05-07 10:31:47 · 678 阅读 · 0 评论 -
PostgreSQL数据库批量删除唯一索引
要批量删除PostgreSQL数据库中非系统模式的所有唯一索引,可以使用以下脚本。请谨慎操作,建议提前备份数据并验证生成的SQL语句。原创 2025-04-29 15:03:42 · 294 阅读 · 0 评论 -
PostgreSQL数据库根据lsn号查询wal文件
若输入非法格式(如非数值、缺少。接近 WAL 文件末尾(如。),需确认是否属于同一文件。是十六进制或十进制整数。分隔符),函数会报错。原创 2025-03-06 10:39:11 · 293 阅读 · 0 评论 -
PostgreSQL数据库之pg_basebackup使用
首先,我们在处理大型数据库时发现pg_dump不够高效。pg_basebackup更适合全量备份,尤其是用于搭建主从复制或者PITR(时间点恢复)。接下来,解释pg_basebackup的基本用法,比如如何连接到数据库,备份到目录或压缩文件。还要提到参数如-D指定目录,-X获取WAL日志,-Ft指定tar格式,-P显示进度等。同时,要注意权限问题,用户需要有replication权限,或者使用超级用户账户。可能还会关心如何恢复备份,这时候需要说明如何将备份文件放到数据目录并启动实例。原创 2025-02-24 10:35:52 · 1815 阅读 · 2 评论 -
PostgreSQL数据库之pg_dump使用
pg_dump是PostgreSQL的一个工具,用来备份数据库。需要备份整个数据库,或者特定的表,或者结构,或者数据。然后,先介绍基本的用法,比如备份整个数据库到文件。先分情况讨论,比如只备份结构或者数据,这时候需要用到--schema-only或者--data-only选项。还有备份特定表的情况,用-t参数加上表名。然后不同的格式,比如自定义格式、目录格式,这些有什么优势,比如压缩或者并行备份。原创 2025-02-24 10:23:39 · 3638 阅读 · 0 评论 -
PostgreSQL的前世今生
PostgreSQL的起源可以追溯到1977年的加州大学伯克利分校(UC Berkeley)的Ingres项目。该项目由著名的数据库科学家Michael Stonebraker领导,他是2015年图灵奖的获得者。原创 2024-10-23 08:39:38 · 1403 阅读 · 0 评论 -
PostgreSQL数据库定期清理归档(pg_wal)日志
其中/path/to/pg_wal/是WAL文件的路径,000000010000003700000007是最后一个需要保留的WAL文件的名称。pg_archivecleanup是一个用于清理归档日志的工具。它可以删除已经归档的WAL文件,释放空间。在postgresql.conf文件中设置archive_mode = on来启用归档功能。定期检查归档日志的大小和增长趋势,根据实际情况调整归档策略和清理频率。这个命令会将归档日志复制到/home/archive/目录。这将会在每周三的凌晨2点执行清理脚本。原创 2024-10-10 16:25:04 · 1656 阅读 · 0 评论 -
PostgreSQL不停机迁移数据
通常涉及到数据迁移,常规操作都是停服务更新。不停机迁移数据是相对比较高级的操作。但在实际执行中,这三个步骤可能会有不一样的表现形式。原创 2024-02-06 16:41:46 · 1109 阅读 · 0 评论 -
PG清理wal日志导致的数据丢失
在数据目录爆满的情况下,删除数据一定要小心,如果需要通过清理wal日志来临时解决问题,则需要通过pg_controldata查看最后的检查点位置来进行清理,不然像本例中直接删除,可能会删除检查点之后的wal日志,那样数据库无法正常开启,会有丢失数据的风险。原创 2024-01-03 21:42:48 · 858 阅读 · 0 评论 -
PostgreSQL的配置文件解析
日常中我们进行安装PostgreSQL后都需要对其进行配置基础配置,以便其能有效发挥出服务器的性能,下面是进行整理后的postgresql.conf配置文件的相关注释,方便大家对于各个属性进行熟悉。转载 2023-12-15 08:41:43 · 339 阅读 · 0 评论 -
PostgreSQL数据库切换到另一个模式下
它们被用于将数据库中的对象分组到逻辑上相关的集合中。我们可以将表、视图、函数等对象组织在不同的模式中。切换到不同的模式使我们能够在特定的上下文中执行操作。3. 连接到数据库:一旦启动了 psql,我们将进入到 PostgreSQL 的默认数据库中。其中 `schema_name` 是我们要切换到的模式名称。在 PostgreSQL 数据库中,我们可以切换到不同的模式,以便在不同的模式下执行操作。这将切换到指定的模式,并使所有后续的操作都在该模式下执行。如果我们不指定数据库名称,它将连接到默认数据库。原创 2023-12-12 14:44:27 · 3570 阅读 · 0 评论 -
简谈PostgreSQL的wal_level=logic
wal_level=logic` 是 PostgreSQL 中的一个配置选项,用于启用逻辑复制(logical replication)功能。逻辑复制是一种高级的数据复制技术,它允许您将变更(例如插入、更新和删除)从一个 PostgreSQL 数据库复制到另一个数据库,而不仅仅是将整个数据文件复制到另一个服务器。启用逻辑复制后,PostgreSQL 将在事务日志(WAL)中记录更改,并将更改发送给订阅者,让其按照相同的顺序应用更改。原创 2023-12-04 09:47:13 · 3162 阅读 · 0 评论 -
PostgreSQL数据库修改所有表的某种数据类型
将数据库中所有表的varchar数据类型修改成text的数据类型。先将所有的varchar数据类型查出来,行成拼接语句,将拼接语句复制到数据库中直接执行。PostgreSQL数据库修改所有表的某种数据类型。原创 2023-11-30 15:27:57 · 346 阅读 · 0 评论 -
PostgreSQL数据库复制槽管理
PostgreSQL数据库复制槽管理原创 2023-11-01 14:44:27 · 350 阅读 · 0 评论 -
PostgreSQL数据库中实现字段递增
接下来,您可以在表的字段中使用该序列。上述命令将使用序列 "my_sequence" 将 "id" 字段的默认值设置为下一个序列值。每次将新记录插入到表中时,该字段将自动获得递增的值。在 PostgreSQL 中,可以使用序列(sequence)来实现字段的递增。序列是一种特殊的对象,用于生成唯一的递增数字。需要注意的是,序列是数据库范围内的全局对象,可以在多个表中重复使用。首先,您需要创建一个序列对象。这将返回序列 "my_sequence" 的下一个值。如果您需要手动获取序列的下一个值,可以使用。原创 2023-10-07 11:04:41 · 969 阅读 · 0 评论 -
PostgreSQL数据库如何提高查询效率
使用合适的扩展插件:PostgreSQL提供了许多扩展插件,可以提供额外的功能和性能优化。例如,pg_stat_statements可以跟踪SQL语句的执行情况,pg_hint_plan可以指导查询计划的生成。避免使用全表扫描,可以通过添加适当的条件和使用合适的索引来改进查询计划。通过在经常被查询的列上创建合适的索引,可以加快查询速度。例如,调整shared_buffers和work_mem的大小,设置合适的并行度参数等。使用合适的数据类型:选择合适的数据类型可以减少存储空间的占用,并提高查询效率。原创 2023-10-07 09:48:47 · 716 阅读 · 0 评论 -
如何在PostgreSQL数据库中插入当前时间
要在PostgreSQL数据库中插入当前时间,可以使用NOW()函数。函数用作值,它将插入当前的日期和时间。在此示例中,假设您有一个名为。的表,其中包含一个名为。原创 2023-10-07 09:44:45 · 3125 阅读 · 0 评论 -
oracle的redo与postgreSQL的WAL以及MySQL的binlog区别
MySQL的binlog是一种用于记录数据库变更操作的事务日志。它可以用于数据恢复、增量备份和数据同步等场景。binlog有不同的记录格式可供选择,且需要配置和管理相关参数来控制其行为和保留策略。原创 2023-09-05 10:46:26 · 1783 阅读 · 0 评论 -
PostgreSQL数据库目录文件及其功能的详解
3. 日志文件(Log files):日志文件(通常以 .log 扩展名结尾)用于记录数据库的事务和故障恢复信息。7. 其他系统文件:除了以上文件和目录外,还有一些与 PostgreSQL 相关的其他系统文件,如 PID 文件(记录 PostgreSQL 服务器进程的进程 ID)、锁文件(用于控制并发访问)等。2. 数据文件(Data files):数据目录中的数据文件(通常以 .dat 扩展名结尾)包含了数据库中的实际数据。在 PostgreSQL 中,数据库的数据和元数据存储在各种文件和目录中。原创 2023-09-05 10:24:39 · 3851 阅读 · 0 评论 -
MySQL与postgreSQL数据库的区别
2. ACID 支持:MySQL和PostgreSQL都支持 ACID(原子性、一致性、隔离性和持久性)事务,但PostgreSQL对事务的支持更加全面和灵活。8. 大型社区和生态系统:PostgreSQL 拥有庞大的用户社区和活跃的开发者社区,用户可以从中获取帮助、分享经验和参与开源社区项目。它采用了各种性能调优技术,例如查询缓存、索引和存储引擎等,以提供高效的查询和响应时间。大型社区和生态系统:MySQL 拥有庞大的用户社区和活跃的开发者社区,用户可以从中获取帮助、分享经验和参与开源社区项目。原创 2023-09-05 10:22:29 · 495 阅读 · 0 评论 -
PostgreSQL数据库巡检脚本
变量为你的数据库连接信息和输出文件路径。运行脚本后,将会生成一个巡检报告文件,其中包含了数据库连接信息、表空间使用情况、数据库大小、表数量和大小、索引数量和大小以及最近的数据库备份等。同样,这只是一个基本的示例脚本,你可以根据具体需求进行扩展和定制,添加更多的巡检项和检查规则。原创 2023-08-02 13:54:26 · 739 阅读 · 0 评论 -
PostgreSQL数据库目录文件详解
usr/local/postgresql/log路径自定义,可在此配置数据库的各种日志,配置了数据库启动关闭记录日志。相当于oracle的 /app/oracle 软件安装目录,psql、pg_ctl等软件可执行的一些命令都在这下面。相当于oracle建库时指定的数据目录,数据库所需的参数文件,数据文件等均在这下面。在Linux系统安装完PostgreSQL数据库之后,从环境变量里看它涉及的目录。原创 2023-07-21 09:23:49 · 2997 阅读 · 0 评论 -
PostgreSQL数据库查看数据库的schema大小
------------------------------------查询PostgreSQL的Schema的大小语句-----------------------------------------------2.PostgreSQL数据库查看数据库的schema大小(不包括索引)------1.PostgreSQL数据库查看数据库的schema大小(包括索引)PostgreSQL数据库查看数据库的Schema大小。原创 2023-07-17 14:55:52 · 1801 阅读 · 1 评论 -
psql: error: connection to server on socket “/opt/postgresgl/pgdata/.s.PGSQL.5432“ failed
psql: error: connection to server on socket "/opt/postgresql/pgdata/.s.PGSQL.5432" failed: 没有那个文件或目录。PostgreSQL数据库psql连接报错connections on Unix domain socket “/opt/postgresgl/pgdata/.s.PGSQL.5432“?1.查看查看参数unix_socket_directories。重新postgreSQL服务,问题解决。原创 2023-06-13 18:52:12 · 5003 阅读 · 0 评论 -
PostgreSQL标准复制方案
手工Failover包括两个步骤:Fencing M(由重到轻:关机,关数据库,改HBA,关连接池,暂停连接池)与Promote S,这两个操作都可以通过脚本在很短的时间内完成。另一方面,当使用同步提交时,假设M出现故障,Failover至S,那么S也需要一个同步从库,以免在切换后立刻因为同步提交而Hang住,因此远程备库适合挂载到S上。变为新的从库,将O挂载到新的M上,将R挂载到新的S上;假设我们使用4单元的标准配置:主库,同步从库,延迟备库,远程备库,分别用字母M,S,O,R标识。恢复原有的拓扑结构。原创 2023-04-24 13:42:36 · 730 阅读 · 0 评论 -
Postgres逻辑复制详解
逻辑订阅者的行为与一个普通的PostgreSQL实例(主库)无异,逻辑订阅者也可以创建自己的发布,拥有自己的订阅者。逻辑订阅者的行为就是一个普通的PostgreSQL实例(主库),逻辑订阅者也可以创建自己的发布,拥有自己的订阅者。模式的复制标识还有一个限制,订阅端的表上的复制身份所包含的列,要么与发布者一致,要么比发布者更少。逻辑复制订阅可以作为同步复制的备库,备库的名字默认就是订阅的名字,也可以通过在连接信息中设置。相对应,物理复制使用精确的块地址与逐字节复制,而逻辑复制则允许对复制过程进行精细的控制。原创 2023-04-24 13:39:56 · 2031 阅读 · 0 评论 -
postgresql表空间学习
表空间pg_default是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录PADATA/base/ 表空间pg\_global用来存放系统字典表;一个表空间可以让多个数据库使用;而一个数据库可以使用多个表空间。一个表空间只属于一个数据库使用;而一个数据库可以拥有多个表空间。通过使用表空间,管理员可以控制一个PostgreSQL安装的磁盘布局。用一句话来讲:能合理利用磁盘性能和空间,制定最优的物理存储方式来管理数据库表和索引。转载 2022-11-16 16:34:57 · 269 阅读 · 0 评论 -
PostgreSQL数据库查询某张表是否有主键
在PostgreSQL数据库中如何判断一张表是否有主键,可以执行如下命令进行查询。需要替换SQL语句中的表名。原创 2022-09-28 10:58:15 · 3558 阅读 · 0 评论 -
Centos7设置postgresql数据库开机自启动
PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下如果不知道具体的路径,可以用find命令进行查找。linux文件即为linux系统上的启动脚本。原创 2022-08-26 10:08:05 · 2105 阅读 · 0 评论 -
MySQL 与 PostgreSQL的区别
PostgreSQL,也称为 Postgres,是一种开源关系数据库,因其可靠性、灵活性和对开放技术标准的支持而享有盛誉。PostgreSQL 支持非关系和关系数据类型。它被称为当今可用的最兼容、最稳定和最成熟的关系数据库之一,并且可以轻松处理复杂的查询。时间点恢复 (PITR) 将数据库还原到特定时间点。使用 pgBackRest 等工具记录对数据库的所有更改的预写日志 (WAL)。用于创建和保留自定义子例程的存储过程。原创 2022-08-23 14:38:11 · 755 阅读 · 1 评论 -
Centos 7.9安装PostgreSQL14.4步骤
ADDRESSip地址,可以定义某台主机或某个网段,32代表检查整个ip地址,相当于固定的ip,24代表只检查前三位,最后一位是0~255之间的任何一个。trust是只要知道数据库用户名就能登录,建议不要在生产环境中使用。METHOD认证方式,常用的有ident,md5,password,trust,reject。TYPEpg的连接方式,local本地unix套接字,hosttcp/ip连接。(8)修改postgres用户的系统环境变量。......原创 2022-07-29 16:48:39 · 664 阅读 · 0 评论 -
如何查看PostgreSQL数据库的版本
1、SQL方式postgres=# show server_version; server_version ---------------- 12.3(1 row)postgres=# select version(); version -----------------------------原创 2022-05-12 09:49:41 · 4036 阅读 · 0 评论 -
PostgreSQL 预写日志的机制和配置的 PostgreSQL 文档
WAL配置有几个与WAL相关的配置参数会影响数据库性能。本节解释了它们的使用。检查点是事务序列中的点,在这些点处,可以保证堆和索引数据文件已使用在该检查点之前写入的所有信息进行了更新。在检查点时间,所有脏数据页都被刷新到磁盘,并且一个特殊的检查点记录被写入日志文件。(更改记录之前已刷新到WAL文件中。)在发生崩溃时,崩溃恢复过程会查看最新的检查点记录以确定日志中的点(称为重做记录),它应该从该点开始重做操作。在此之前对数据文件所做的任何更改都保证已经在磁盘上。因此,在检查点之后,不再需...原创 2022-05-11 15:07:31 · 363 阅读 · 0 评论 -
PostgreSQL数据库常用SQL语句
1 、查询pg中单张表的大小(不包含索引)select pg_size_pretty(pg_relation_size('schema.table_name'));2 、查询数据库中所有表的大小select relname, pg_size_pretty(pg_relation_size(relid))from pg_stat_user_tableswhere schemaname = 'public'order by pg_relati...原创 2022-04-21 09:35:51 · 3978 阅读 · 0 评论