WAL(write ahead log)位于数据目录下的pg_wal目录。这个日志等于Oracle的REDO log。与Oracle归档不同的是,PG采用第三方工具(文件系统级备份)来对WAL进行归档。
配置文件postgresql.conf
- 设置wal_level为replica或更高级别;
-mininal : 只记录实例恢复所需的信息
-replica :记录支持WAL归档和复制的足够信息
-logical :记录支持逻辑解码的足够信息
- 设置archive_mode为on;
-off : 禁用归档模式
-on : 启用归档模式
-always : 启用归档模式,并且在归档恢复和备库模式下依然归档。
当wal_level设置为mininal时,归档模式不能被启用。
- 设置archive_command为合适的shell命令
- 这里shell命令中%p表示需要归档的全路径,%f表示文件名。
- shell命令返回0值,则PostgreSQL认为已归档成功,否则会重新进行归档。
- 归档命令应该被设计为不要覆盖已有的文件。
- 归档命令只会作用在完成的WAL段上,因此如果需要限时进行归档,可以设置archive_timeout参数来强制数据库switch WAL。
- 也可以手动执行pg_switch_wal来手动切换。(在Oracle中是手动switch或archive logfile current)