Skip to main content
Version: 1.0.14

WAL与归档

wal_level

枚举类型。WAL(Write-Ahead Log,预写式日志)的级别。可选值:minimalreplicalogical。默认值 replica。该参数只能在实例启动时设置。

wal_level = replica # minimal, replica, or logical (change requires restart)

fsync

布尔类型。是否尝试确保数据已写入磁盘。关闭此参数可能导致不可恢复的数据损坏。默认值 on

fsync = on # flush data to disk for crash safety (turning this off can cause unrecoverable data corruption)

synchronous_commit

枚举类型。事务同步提交级别。可选值:offlocalremote_writeremote_applyon。默认值 on

synchronous_commit = on # synchronization level;
# off, local, remote_write, remote_apply, or on

full_page_writes

布尔类型。是否将整页写入到 WAL 日志中。默认值 on

full_page_writes = on # recover from partial page writes

wal_log_hints

布尔类型。当设置为 on 时,数据库在检查点之后第一次页面更改过程中,将每个磁盘页的全部内容写入到 WAL 中。默认值 off,建议开启。该参数只能在实例启动时设置。

wal_log_hints = on # (change requires restart)

wal_compression

枚举类型。是否对 WAL 日志中的整页写入进行压缩。可选值:offpglzlz4zstdon。默认值 off

wal_compression = off # enables compression of full-page writes; off, pglz, lz4, zstd, or on

wal_recycle

布尔类型。是否重用 WAL 日志文件。默认值 on

wal_recycle = on # recycle WAL files

wal_buffers

数值类型(内存)。WAL 缓冲区大小。默认值 -1,表示约 3% × shared_buffers。建议设置为 16MB。该参数只能在实例启动时设置。

wal_buffers = 16MB # (change requires restart)

min_wal_size

数值类型(磁盘空间)。WAL 日志空间消耗的下限。只要 WAL 磁盘用量保持在这个设置之下,在检查点时旧的 WAL 文件总是被回收。默认值 80MB,建议根据业务调大。

min_wal_size = 8GB

max_wal_size

数值类型(磁盘空间)。在自动 WAL 检查点之间允许 WAL 增长到的最大尺寸。这是一个软限制,特殊情况下 WAL 尺寸可能会超过。默认值 1GB,建议根据业务调大。

max_wal_size = 2GB

checkpoint_completion_target

数值类型。设置检查点完成的目标时间,表示在检查点间隔时间的百分之多少内完成写入。默认值 0.9

checkpoint_completion_target = 0.9

归档配置

测试阶段可以不开启归档,生产环境建议开启。

archive_mode

枚举类型。是否开启日志归档。默认值 off。该参数只能在实例启动时设置。

archive_mode = on # (change requires restart)

archive_command

字符串类型。归档使用的命令。其中 %p 是 WAL 文件的路径,%f 是 WAL 文件的文件名。

archive_command = 'test ! -f /data/halo/archivedir/%f && cp %p /data/halo/archivedir/%f'
# placeholders: %p = path of file to archive
# %f = file name only

restore_command

字符串类型。还原命令,用于在需要恢复数据库时从归档目录中复制 WAL 文件。

restore_command = '' # command to use to restore an archived WAL file
# placeholders: %p = path of file to restore
# %f = file name only

归档配置步骤:

1)创建归档目录:

mkdir -p /data/halo/archivedir
chown -R halo:halo /data/halo/archivedir

2)修改数据库配置文件:

vi $PGDATA/postgresql.conf

添加以下内容:

archive_mode = on
archive_command = 'test ! -f /data/halo/archivedir/%f && cp %p /data/halo/archivedir/%f'
restore_command = 'cp /data/halo/archivedir/%f %p'