重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 125|回复: 0
打印 上一主题 下一主题

PostgreSQL wal_level详解

[复制链接]
跳转到指定楼层
楼主
发表于 2026-6-21 22:08:10 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
一、什么是 wal_level
wal_level 是 PostgreSQL 最核心的配置参数之一,它决定 WAL 日志记录的详细程度。

WAL 日志越详细,功能越强,但磁盘占用与 I/O 开销越大。

配置文件: postgresql.conf

必须重启数据库才能生效

二、wal_level 支持的 4 种取值(PG 9.6+ 到 PG 16+)
从低到高依次为:

minimal
replica
logical
archive(PG 15+ 新增,极少用)

生产环境 99% 只用 replica /logical。

三、每个级别详细说明 + 区别 + 举例
1)minimal(最小记录)
含义:
只记录保证数据库崩溃恢复必需的最小日志,不记录任何可用于复制 / 归档的信息。

记录内容:
只记录事务提交、回滚
跳过大量数据变更日志
不支持流复制、归档、逻辑复制

优点:
性能最高
WAL 体积最小

缺点:
无法做备份恢复
无法做主从复制
无法做 PITR 时间点恢复

适用场景:
临时库
测试库
数据可丢失、无需备份的环境


举例说明:

wal_level = minimal
执行 CREATE TABLE AS SELECT、COPY、CREATE INDEX 会极快,但无法同步到从库。

2)replica(副本级别,生产默认值)
含义
在 minimal 基础上,增加流复制、归档、物理备份所需的日志。



物理流复制必须使用这个级别。

记录内容:
所有崩溃恢复信息
所有数据变更(INSERT/UPDATE/DELETE)
支持主从物理复制
支持 WAL 归档
支持 PITR 时间点恢复

不支持:
不支持逻辑复制
不支持逻辑解码、CDC、pg_logical 等

优点:
性能好
开销适中
满足绝大多数高可用场景

适用场景:
主从物理流复制
日常备份、归档
生产标准高可用架构

举例说明:

wal_level = replica


你可以搭建:

一主一从流复制
一主多从流复制
定时归档备份
但不能搭建逻辑复制。

3)logical(逻辑级别,逻辑复制必备)
含义:
在 replica 基础上,额外增加逻辑解码所需信息,是逻辑复制的强制前提。

记录内容:
包含 replica 的所有内容
额外记录:行变更前镜像、元数据、表结构信息
支持逻辑复制(发布 / 订阅)
支持 CDC 增量订阅
支持跨版本迁移

优点:
支持逻辑复制
支持表级别同步
支持跨大版本同步(PG12→PG16)
支持数据订阅、数据分发、CDC

缺点:
WAL 体积比 replica 大 10%~30%
有轻微性能损耗(可忽略)

适用场景:
逻辑复制(发布 / 订阅)
数据库跨版本升级
读写分离
数据同步到数仓
增量数据订阅(CDC)

举例说明:

wal_level = logical


你可以:

创建 publication /subscription
同步部分表
跨版本同步
从 PG 同步到其他数据库(通过解码)
4)archive(PG15+ 新增,极少使用)
含义:
介于 minimal 和 replica 之间,仅支持归档,不支持流复制。

几乎不用,可忽略。

四、4 个级别功能对比表(最清晰)


级别        崩溃恢复        物理备份        WAL 归档        流复制        逻辑复制        性能        生产常用
minimal        ✅        ❌        ❌        ❌        ❌        最快        ❌
archive        ✅        ✅        ✅        ❌        ❌        快        ❌
replica        ✅        ✅        ✅        ✅        ❌        快        ✅
logical        ✅        ✅        ✅        ✅        ✅        较快        ✅

五、最关键区别总结(一句话记住)
minimal:只保命,不能备份、不能复制
replica:支持物理流复制、备份、归档(默认)
logical:支持逻辑复制(发布订阅),比 replica 多记录逻辑信息

六、生产环境怎么选?(直接给结论)
1)只用主从高可用、物理复制

wal_level = replica


2)需要逻辑复制、跨版本迁移、表同步、CDC

wal_level = logical


3)测试库、临时库、数据可丢

wal_level = minimal


七、最经典举例(一看就懂)
例子 1:物理复制(一主一从)
你要搭主从流复制,做高可用,不需要逻辑同步

→ wal_level = replica

例子 2:逻辑复制(发布订阅)
你要把某些表同步到另一库,做读写分离

→ 必须 wal_level = logical

否则执行 CREATE PUBLICATION 直接报错。

例子 3:最小性能模式
你在做 ETL 临时库,速度优先,数据可重建

→ wal_level = minimal

八、常见错误(必看)
想建逻辑复制,但 wal_level=replica → 报错:cannot create logical replication slot
修改 wal_level 不重启 → 不生效
生产用 minimal → 无法备份,一旦删库无法恢复

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-7-10 05:06 , Processed in 0.241194 second(s), 22 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表