类似于oracle的redo log,用于数据库恢复,当一条SQL语句执行,PG会把对应的块放到缓冲区执行,,会写进WAL缓冲区会进行写操作,commit后,WAL writer进程进行写操作,把日志缓冲区WAL buffer里面的日志条目写到日志文件(类似Oracle中的LGWR)。数据库崩溃后,WAL日志可以用于recovery。
WAL写进程里面记录的是格式化之后的日志条目,并不是原始的sql语句。
日志条目= 事务记录 格式化。
WAL文件管理:
在Oracle中 redo log日志采用循环写的形式,但在PG中的WAL日志不会循环写,当WAL日志写满了 会重新创建一个WAL文件。
WAL 满足以下条件进行日志切换
1.WAL段写满了。
2.人为切换WAL日志。
查看当前用的日志:
3.基于主备复制需求配置归档模式。
归档日志:
打开归档:
alter system set archive_mod = on;
设置归档格式:
alter system set archive_command ='cp %p /home/postgres/archives/%f';
wal相关参数:
1.wal目录最大可用尺寸 : max_wal_size 默认是1G
2.wal文件最大可用尺寸: wal_segment_size 默认是16MB
3.wal缓冲区尺寸: wal_buffers 默认是512kb