本文共 1780 字,大约阅读时间需要 5 分钟。
PostgreSQL 3 WAL配置指南
1. WAL写前日志
1.1 fsync
- 默认值:
fsync = on - 说明:开启后强制将数据同步更新到磁盘,确保数据库在OS或硬件崩溃后恢复一致状态。关闭可能提升性能,但无法保证数据一致性。通常情况下建议保留
fsync = on,除非能够接受电或硬件故障导致的数据丢失。
1.2 wal_level
- 默认值:
wal_level = replica - 说明:控制WAL日志模式,可选
minimal、replica、logical。minimal仅写入崩溃或关机时所需信息,不建议使用。replica增加归档信息,适用于只读服务器。logical主要用于logical decoding场景,可能导致WAL写放大。
1.3 wal_buffers
- 默认值:
wal_buffers = -1 - 说明:WAL数据存储在内存中,
-1表示与shared_buffers共用。重启后生效,建议根据系统需求调整。
1.4 wal_writer_delay
- 默认值:
wal_writer_delay = 200ms - 说明:WAL writer进程的间歇时间,默认200ms。需根据系统负载平衡设置,避免磁盘IO过载或内存不足。
1.5 wal_sync_method
- 默认值:
wal_sync_method = fdatasync - 说明:控制WAL写入磁盘的方式,默认值一般可用,无需过度配置。
1.6 synchronous_commit
- 默认值:
synchronous_commit = on - 说明:控制事务提交同步性,默认
on。关闭可提升性能,但可能导致最大3倍的wal_writer_delay时间丢失数据。remote_write和local模式提供不同同步级别。
1.7 full_page_writes
- 默认值:
full_page_writes = on - 说明:防止块折断策略,开启后在检查点后首次修改页面时整块写入WAL,确保恢复一致性。关闭可提升性能,但风险数据丢失。
1.8 wal_compression
- 默认值:
wal_compression = off - 说明:是否对全页写入数据进行压缩,默认关闭。开启可减少磁盘空间占用,但需权衡压缩性能。
1.9 commit_delay
- 默认值:
commit_delay = 0 - 说明:事务提交延迟设置,默认0。非零值可减少IO,但需权衡事务提交延迟和系统稳定性。
1.10 commit_siblings
- 默认值:
commit_siblings = 5 - 说明:并发事务提交数量,默认5。合并提交可减少磁盘IO,但需确保系统稳定性。
1.11 wal_writer_flush_after
- 默认值:
wal_writer_flush_after = 1MB - 说明:触发fsync的WAL字节数阈值,默认1MB。设置为0关闭该功能。
2. 检查点
2.1 checkpoint_timeout
- 默认值:
5min - 说明:检查点间隔时间,默认5分钟。不建议频繁检查点,以免增加FULL PAGE WRITE操作。
2.2 checkpoint_completion_target
- 默认值:
0.5 - 说明:控制检查点执行时间。硬盘好的情况下设定较低值,确保快速恢复。
2.3 其他
- max_wal_size:建议为
shared_buffers的2倍。 - min_wal_size:建议为
max_wal_size的四分之一。 - checkpoint_flush_after:建议128~256kB。
- checkpoint_warning:建议设置30秒。
3. 归档
3.1 archive_mode
- 默认值:
off - 说明:开启后启用归档模式,支持增量备份和恢复。
3.2 archive_command
- 默认值:空字符串
- 说明:归档命令占位符:
%p为归档路径,%f为文件名。建议使用SSH、rsync等传输方式。
3.3 archive_dir
- 默认值:空字符串
- 说明:归档目录设置,需在数据库启动时指定。
3.4 archive_timeout
- 默认值:
0 - 说明:控制事务日志切换时间,建议根据系统负载调整。
4. 其他
- wal_log_hints = off:关闭非关键更新的全页写入。
转载地址:http://hpxfk.baihongyu.com/