PostgreSQL WAL 日志
pg_wal(Write-AHead Logging)
wal日志位置:
$PGDATA/pg_wal(pg10之前叫pg_xlog)
|
|
|
|
Latest checkpoint location: E1/6D48F3F8
Prior checkpoint location: E1/6D2FA098
Latest checkpoint's REDO location: E1/6D4364E0
Latest checkpoint's REDO WAL file: 00000001000000E10000006D
00000001000000E10000006D 之前的 pg_wal 文件可以删除
如果你的数据库配置不当,导致pg_wal文件堆积的话,如何人为的处理呢?
比如你配置了archive_mode=on,但是没有配置archive_command,那么xlog文件会一直堆积(pg_wal写完后,会写.ready,但是由于没有配置archive_command,也就是说不会触发归档命令,所以一直都不会写.done)。
从而导致pg_wal一直不会被清理。
然后使用pg_archivecleanup命令来清理。
|
|
如何关闭或修改归档模式
-
修改
archive_mode
配置当启用archive_mode时,通过设置archive_command将已完成的WAL段发送到归档存储。除了off,disable,还有两种模式:on,always。在正常操作期间,两种模式之间没有区别,但是当设置为always的情况下,WAL archiver在存档恢复或待机模式下也被启用。在always模式下,从归档还原或流式复制流的所有文件都将被归档(再次)。archive_mode和archive_command是单独的变量,因此可以在不更改存档模式的情况下更改archive_command。此参数只能在服务器启动时设置。当wal_level设置为minimal时,无法启用archive_mode。
-
修改
wal_level
配置- 1、minimal是默认的值,它仅写入崩溃或者突发关机时所需要的信息(不建议使用)。
- 2、archive是增加wal归档所需的日志(最常用)。
- 3、hot_standby是在备用服务器上增加了运行只读查询所需的信息,一般实在流复制的时候使用到。
-
修改
archive_command
配置
max_slot_wal_keep_size https://postgresqlco.nf/doc/en/param/max_slot_wal_keep_size/13/
指定在检查点时复制槽允许保留在pg_wal目录中的 WAL 文件的最大大小。如果max_slot_wal_keep_size
为 -1(默认值),则复制槽可能会保留无限量的 WAL 文件。否则,如果复制槽的 restart_lsn 落后于当前 LSN 超过给定大小,则使用该槽的备用服务器可能由于删除所需的 WAL 文件而不再能够继续复制。您可以在pg_replication_slots中查看复制槽的 WAL 可用性。