
PG
文章平均质量分 67
喝醉酒的小白
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
patronictl switchover --force 的作用
【代码】patronictl switchover --force 的作用。原创 2025-06-11 21:34:33 · 217 阅读 · 0 评论 -
PG高可用测试 - 强制删除主库
原创 2025-06-11 17:21:18 · 88 阅读 · 0 评论 -
Concurrent update of postgres-xxx-leader
如果当前已有别的节点抢占了 leader key,CAS 失败就会返回 HTTP 409。:你当前不是 leader 或 DCS 中 leader key 已被修改,不能续约。在 Patroni 或其他使用分布式协调(如 etcd、Consul)的系统中,流程的表现,说明 Patroni 正常触发保护机制,避免了脑裂。你这段 Patroni 日志明确显示的是一次典型的。并主动降级(Demote)的过程,其本质原因正是。在 Patroni 中,这通常发生在尝试。,即使第一次续约失败,还有重试机会。原创 2025-06-11 10:24:52 · 767 阅读 · 0 评论 -
CrunchyData Postgres Operator(PGO) 实现 跨多云 PostgreSQL 部署 的一整套解决方案
通过在阿里云和华为云的 Kubernetes 集群中部署 PostgreSQL,并结合 PgBouncer、ExternalDNS 以及各自的 DNS 服务,可以实现高可用的跨云数据库部署。当主节点发生故障时,系统能够自动切换到从节点,并快速更新 DNS 记录,确保业务的连续性和稳定性。如果您需要更详细的部署脚本或配置文件,欢迎进一步交流。在双 Kubernetes 集群、跨云(如阿里云 + 华为云)的部署中,结合。原创 2025-06-04 22:16:50 · 707 阅读 · 0 评论 -
Kubernetes Operator(以 Patroni + PostgreSQL 为例) 实现跨多云部署的两种典型方式
实现。原创 2025-06-04 22:10:44 · 941 阅读 · 0 评论 -
跨多云环境下的数据一致性保障与故障自动切换 # PG
以异步流复制为基础,利用 Patroni + 分布式协调组件实现自动故障切换,并通过 PgBouncer、DNS 或 Gateway 实现透明流量切换,是跨多云 PostgreSQL 数据一致与高可用的主流方式。原创 2025-06-04 22:07:40 · 782 阅读 · 0 评论 -
PostgreSQL 中 SLO/SLA 的定义、计算方式及与性能监控的关系
在 PostgreSQL 数据库中,SLO(Service Level Objective)和 SLA(Service Level Agreement)是服务质量管理的关键概念。SLO 是可量化的服务目标(如数据库可用性或查询延迟),而 SLA 是服务提供商和客户之间基于 SLO 达成的正式协议,定义服务水平的保证和违约责任。PostgreSQL 本身不提供内置的 SLO/SLA 功能;这些目标通常通过外部监控工具实现,以评估数据库性能和可靠性。以下我将从定义、计算方式和性能监控的关系三个方面详细解释。原创 2025-06-04 15:13:37 · 895 阅读 · 0 评论 -
PG Collector中关于Unlogged Tables指标
通过监控Unlogged Table的规模与增长趋势,可有效平衡性能需求与数据安全风险。以下是PG Collector中关于。原创 2025-06-04 14:59:26 · 772 阅读 · 0 评论 -
PostgreSQL wal_log_hints 配置及作用详解
【代码】PostgreSQL wal_log_hints 配置及作用详解。原创 2025-06-04 14:37:48 · 287 阅读 · 0 评论 -
pg_stat_kcache
若比值持续偏高,需优化索引或调整缓存策略。值极低时,表明查询受限于I/O而非CPU。,突破单一SQL层级的分析局限。下降92%,因添加覆盖索引+扩大。二者结合可定位查询的。原创 2025-06-04 14:23:11 · 648 阅读 · 0 评论 -
Patroni 更新 Kubernetes Pod Annotations 的源码逻辑详解
在与 Kubernetes 集成部署时,Patroni 会定期更新当前 Pod 的 annotations 来反映 PostgreSQL 节点的状态,如角色(主/备)、连接地址等。以下是 Patroni 中更新 Kubernetes Pod annotations 的关键源码调用链及其对应的 GitHub 源码链接,帮助你深入理解其实现逻辑。该方法封装了与 Kubernetes API 的交互,用于更新当前 Pod 的 annotations。方法更新当前 Pod 的 annotations。原创 2025-06-04 11:21:59 · 731 阅读 · 0 评论 -
PG:AttributeError: type object ‘opts‘ has no attribute ‘theme‘
方案操作说明✅ 推荐:安装兼容版本 ydiff最简单直接。原创 2025-06-03 17:24:00 · 415 阅读 · 0 评论 -
openGauss:wal_level
【代码】openGauss:wal_level。原创 2025-06-03 15:30:07 · 282 阅读 · 0 评论 -
PG:archive command failed with exit code 124
说明:归档命令因执行超时(超过 10 秒)被timeout杀死,导致 PostgreSQL 归档失败。检查项命令 / 方式正常现象异常说明错误日志频率偶发高频率错误,说明归档失败严重WAL 是否堆积、查看.ready文件<1GB,少量.ready文件>10GB,多.ready文件备份是否正常或 页面检查状态 OK,近期成功备份无备份、报错,影响归档存储/网络df -hpingdd写入测试响应快写入慢、超时、空间不足临时解决脚本完成归档时间仍不足需进一步优化如你能提供。原创 2025-06-03 11:16:27 · 696 阅读 · 0 评论 -
PostgreSQL 的 WAL 与 Oracle 的 Redo Log 的全方面对比
维度目的保证事务一致性与持久性同左写入位置pg_wal/目录Redo Log 文件组刷盘进程wal_writer、后台同步数据恢复基于 Base Backup + WAL Replay基于 RMAN + Redo/Undo备份恢复机制PITR、逻辑复制工具支持相对较少,开源工具丰富企业级工具成熟,运维丰富。原创 2025-05-30 14:18:45 · 1096 阅读 · 0 评论 -
Python 中实现 PostgreSQL LISTEN 自动重建机制
是构建实时通知系统、缓存同步、微服务协调等场景的重要能力。我可以提供完整工程模板。原创 2025-05-29 15:01:27 · 463 阅读 · 0 评论 -
PostgreSQL 客户端报错:[ERROR] LISTEN command failed: no connection to the server
这类LISTEN失败的错误,最常见的是由于数据库连接被意外关闭(连接池回收、PG 重启、网络异常)。关键在于排查连接是否断开、为何断开,以及是否有自动重建机制。PostgreSQL 的部署方式(容器、K8s、裸机);是否使用中间件(如连接池或 pgbouncer);报错时应用与数据库连接日志片段;我可以进一步为你定向排查建议。需要我帮你写个自动检测脚本或故障恢复重连模块吗?原创 2025-05-29 14:51:30 · 866 阅读 · 0 评论 -
Patroni 与 etcd 之间的具体交互流程、锁对象的结构
Patroni 与 etcd 的交互采用了分布式租约锁(lease-based distributed lock)机制基于 etcd 的一致性和自动 key 过期机制,实现可靠的主节点选举;租约 TTL 和 keepalive 保证系统在主节点故障时快速收敛;状态通过 etcd 共享,保证所有节点对集群视图一致。原创 2025-05-26 18:25:59 · 757 阅读 · 0 评论 -
锁续约机制 | 锁续约失败的常见原因
Patroni 的主节点会以周期性的方式向 etcd 发送更新请求(续约),更新成功后会刷新租约的过期时间,继续维持主节点身份。其他候选节点则周期性检查当前锁的状态,判断是否有必要参与选举。作为高可用组件,通过其内置的 API Server 定期将主节点的锁信息写入到 etcd 中。期间发生了 etcd 更新超时。这意味着在此时间段内,在一个运行正常的数据库集群中,原创 2025-05-26 18:23:50 · 304 阅读 · 0 评论 -
PostgreSQL数据库:核心管理技巧,涵盖性能优化、备份恢复、高可用架构、安全配置及日常运维等关键领域
PostgreSQL数据库管理核心摘要 本文系统总结了PostgreSQL数据库的核心管理技巧,涵盖性能优化、备份恢复、高可用架构等关键领域。性能优化方面,重点介绍了内存分配参数调优、SQL查询分析及索引策略,并提供了详细的配置建议。备份恢复部分详细讲解了物理和逻辑备份的实现方法,包括WAL归档和PITR恢复技术。高可用架构设计阐述了流复制和逻辑复制的配置流程。此外,还涉及安全权限管理、日常运维监控以及常见故障处理方法,为PostgreSQL管理员提供了全面的实践指导。原创 2025-05-25 17:44:46 · 598 阅读 · 0 评论 -
KingbaseES 事务 ID wraparound 告警排查笔记
PostgreSQL/KingbaseES 默认将未加双引号的标识符转换为小写,需确保表名及 schema 是否拼写正确。如需自动化脚本、告警 SQL 模板或 PDF 导出版本,请告诉我,我可以立即为你生成。距离 wraparound 回收的事务 ID 不足 20000000,当前剩余为。建议与监控平台对接人员确认告警来源和数据刷新策略。原创 2025-05-23 19:25:46 · 258 阅读 · 0 评论 -
KingbaseES:默认schema介绍
查询返回了当前数据库中的所有 schema(模式),包括默认和系统自动创建的 schema。在 KingbaseES 中(类似于 PostgreSQL 的架构),原创 2025-05-23 19:24:21 · 377 阅读 · 0 评论 -
KingbaseES 警告处理笔记(事务 ID wraparound)
KingbaseES 基于 PostgreSQL,在其内部使用 32 位的事务 ID(距离 wraparound 回收的事务 ID 不足 20000000,当前剩余为。,代表最早可见的数据事务。如果某表长时间未执行。建议先在业务低峰期操作,以避免对性能造成影响。),会导致数据库警告甚至停止服务。年龄可能逐渐逼近最大值(原创 2025-05-23 19:22:58 · 399 阅读 · 0 评论 -
堆栈信息分析:/proc/<pid>/stack
中获取的线程调用栈信息,显示了进程 PID 为 6170 的某个线程在内核态的调用栈。如能提供更多信息(比如 Patroni 日志、Postgres 状态、容器资源配置),我可以进一步定位问题。是否需要我帮你生成一些排查脚本?(Fast Userspace Mutex)是 Linux 的一种轻量级用户空间锁机制。当一个线程需要等待某个锁释放时,它会被挂起在。)中看到 Patroni 的卡顿情况。看日志是否在等待锁、leader 选举相关的动作。上,可能说明线程池被锁阻塞。看是不是很多线程都卡在。原创 2025-05-23 18:56:30 · 798 阅读 · 0 评论 -
分析和终止与 `Patroni` 相关的 PostgreSQL 连接
通过上述步骤,你成功查询到了与Patroni相关的数据库连接,并终止了该连接。这些操作可能用于调试、维护或解决数据库连接问题。如果你有其他问题或需要进一步的帮助,请告诉我!原创 2025-05-23 18:55:44 · 314 阅读 · 0 评论 -
/tmp/postgres-ha-bootstrap.yaml
配置,/pgdata/data/vastbase-0cd7b32e/pg_hba.conf。文件是 PostgreSQL 控制客户端连接的核心配置文件,而在使用。,因为 Patroni 并不会实时检测 YAML 文件的变更。的高可用集群中,该文件的管理通常是由。要让 Patroni 重新读取并写入。重启后它会重新读取 YAML 并重写。如果你只修改了 YAML 文件但。如果你紧急需要生效,可以修改。原创 2025-05-22 11:18:36 · 359 阅读 · 0 评论 -
PostgreSQL:性能瓶颈与高可用异常切换的排查思路、步骤、常用工具与命令
数据库的性能瓶颈与高可用异常切换的排查步骤、常用命令和工具的完整清单,适用于生产环境下的问题诊断与优化。原创 2025-05-21 21:06:12 · 898 阅读 · 0 评论 -
关系型数据库:日志流
关系型数据库的日志流(Log Stream)是指数据库系统中用于记录所有事务修改操作的连续日志记录序列,它在保证数据持久性(Durability)、一致性(Consistency)、故障恢复(Recovery)以及主从复制(Replication)等方面发挥着核心作用。日志流大体可分为重做日志(Redo Log)和撤销日志(Undo Log)两类,前者用于在崩溃后重做已提交的事务操作,后者用于回滚未完成或被中止的事务,以满足 ACID 属性中的原子性(Atomicity)和持久性(Durability)(原创 2025-05-19 16:44:05 · 566 阅读 · 0 评论 -
关系型数据库:Hint的作用是什么
在关系型数据库里,Hint(也常译作“优化器提示”或“提示符”)并不是一种全新的底层技术,而是一种在 SQL 语句里嵌入的、用来“告诉”查询优化器(Optimizer)如何生成执行计划的人工指令。它并不会改变数据存储、事务协议等核心引擎逻辑,而是对优化器决策做“微调”或“强制约束”,以满足特殊的性能或功能需求。解析阶段SQL 语句中带有 Hint 的部分,数据库解析器(Parser)会识别并剥离这些 Hint,不把它们当作标准 SQL 语法的一部分。优化阶段在生成执行计划前(Rewrite、Plan G原创 2025-05-19 16:21:17 · 1061 阅读 · 0 评论 -
pgvector 翻译
此外,由于没有像 IVFFlat 那样的训练步骤,可以在表中没有任何数据的情况下创建索引。使用近似索引时,由于过滤是在索引扫描后应用的,因此带有过滤的查询可能会返回较少的结果。从 0.8.0 版本开始,您可以启用迭代索引扫描,这将自动扫描更多索引,直到找到足够的结果(或者达到。较高的值可以在以速度为代价的情况下提供更好的召回率,也可以将其设置为列表数量以进行精确最近邻搜索(此时规划器将不会使用索引)不需要,但与其他索引类型一样,如果索引能够放入内存,您可能会获得更好的性能。)的限制,默认值为 40。翻译 2025-05-15 09:38:06 · 93 阅读 · 0 评论 -
VB主备搭建笔记:K8s + docker
以上为主备搭建的全面整理笔记,包含 Service 暴露、同步用户与权限、基线备份方式、主备通道配置以及常见故障排查,便于在实际运维中快速定位和执行。VB主备搭建笔记,分为环境概览、主库配置、备库配置、主备通道配置四大部分,便于后续查阅和运维。修改备库配置文件 vi /pgdata/postgresql.conf。主备之间需要互相配置连接信息,使用。原创 2025-05-13 17:56:23 · 1287 阅读 · 0 评论 -
Must be system admin or operator admin in operation mode to control recovery.
PostgreSQL 及其衍生版(openGauss/vastbase)的恢复控制函数只能在数据库处于恢复状态时调用,否则即使是超级用户也会返回。以上操作在恢复模式下、以 SYSADMIN 或 OPRADMIN 身份执行时才会生效 (按上述步骤切换至正确的节点与角色后,您将能顺利控制和查询 WAL 重放的暂停/恢复状态。:安装时的 OS 同名用户,拥有最高权限,可绕过所有权限检查 (:非恢复模式或权限不足导致无法调用恢复控制函数。原创 2025-05-13 17:07:46 · 788 阅读 · 0 评论 -
FATAL: Forbid remote connection with trust method!
在 openGauss 中,当客户端尝试通过 TCP/IP 远程连接数据库时,如果在中对该连接使用了trust这是因为 openGauss 为了保证远程连接的安全性,默认禁止使用无需密码的 trust 认证方式对外提供访问服务。要解决此问题,需在中为远程主机配置sha256(或其他安全)认证方式,并重新加载配置或重启数据库实例。优快云博客园。原创 2025-05-13 16:45:02 · 951 阅读 · 0 评论 -
FATAL: Forbid remote connection with initial user.
在进行增量构建(standby 模式)时,需要通过网络连接主库来拉取 WAL 日志。远程复制的行,例如(假设 Standby IP 为。该用户只拥有复制所需的最小权限,避免凭据泄露风险(TCP 连接,这就是增量构建失败的根本原因。即可允许通过 MD5 验证的复制连接(,即可使用专用用户完成增量构建(表明 openGauss。在主库上以足够权限但与。使用“初始用户”(如。原创 2025-05-13 14:47:37 · 936 阅读 · 0 评论 -
FATAL: Forbid remote connection via internal maintenance tools.
通过 TCP 远程连接主库拉取 WAL。等),会立即拒绝,以避免高权限账户凭据泄露导致全库风险。连接主库,绕开初始用户限制,从而成功完成增量构建。openGauss 内部代码在维护工具(如。)发起的远程连接时,若用户名为“初始用户”(中的条目按顺序匹配,建议将复制相关的。),或指定了初始用户,都会触发该策略。禁止使用“初始运维用户”(如。执行增量构建时,会以。原创 2025-05-13 14:13:13 · 1014 阅读 · 0 评论 -
data directory “/pgdata“ has group or world access
希望以上步骤能帮你快速解决权限问题,让 standby 模式顺利启动。),而当前目录权限过于开放(包含组或其它用户权限),因此拒绝启动。说明 openGauss 出于安全考虑,要求数据目录。此时应该能正常启动,不再提示目录权限错误。目录及其子目录、文件都属于。假设你的数据库运行账号是。原创 2025-05-13 09:57:48 · 343 阅读 · 0 评论 -
Patroni的failsafe细节
这些文档与讨论涵盖了从概念介绍到源码实现的不同层面,建议结合阅读以全面理解 Patroni 的 DCS Failsafe Mode。且对 DCS 的 Leader 锁续租失败(且失败原因不是版本/值/索引不匹配)时触发(请求(默认端口 8008),携带自身最新的 WAL LSN、复制槽状态等元数据(合理设置三者关系可控制对 DCS 暂时性故障的容忍度及集群切换的敏感度。Patroni 在启动和每次选举成功后,会将自己写入 DCS 的。的永久键,获取集群中所有已知成员列表(Pod 或主机名)(原创 2025-05-12 17:48:44 · 540 阅读 · 0 评论 -
Patroni 管理的 PostgreSQL 高可用集群中 的心跳机制
接口返回失败时,Patroni 会触发故障切换(failover)或禁用疑似故障节点,保证集群始终只有一个 Primary 并保持可用性。这些端点可供外部代理(如 MetalLB、HAProxy)或监控系统实时获取节点角色和健康状态,以做流量路由或报警。当 Primary 或 Replica 未在超时时间内完成心跳续租或状态更新,或。原创 2025-05-12 17:44:32 · 848 阅读 · 0 评论 -
Patroni + API Server 的 PostgreSQL 高可用架构说明
Patroni 是一个 Python 编写的 HA 模板,通过对 PostgreSQL 进程健康和角色进行监控,实现自动故障转移;etcd (或 Consul/ZooKeeper/Kubernetes API Server)作为分布式配置存储(DCS),保存集群状态并充当领导选举的协调者;客户端流量通常通过 HAProxy (可替换为其他负载均衡器或 Kubernetes Service)路由到当前主节点或只读副本。原创 2025-05-12 15:24:20 · 636 阅读 · 0 评论 -
PostgreSQL:行锁
PostgreSQL 中的行锁(Row-level Locks)是控制并发事务对特定行数据访问的机制,主要包括共享锁(ShareLock)和排他锁(ExclusiveLock)。共享锁允许多个事务同时读取同一行数据,但阻止修改或删除;排他锁则确保事务在修改或删除行时,其他事务无法进行任何操作。行锁在事务执行相关操作时自动获取,并在事务提交或回滚时释放。行锁常用于数据更新、删除操作以及防止幻读现象。通过查询 pg_locks 系统表可以查看当前行锁状态。然而,在高并发场景下,过多的行锁可能导致事务等待或死锁,原创 2025-05-09 10:42:13 · 394 阅读 · 0 评论