xlog是什么文件(为什么新建的文件夹找不到了)
admin
2023-09-01 20:33:22

xlog/wal日志

类似于Oracle的redo,PostgreSQL的redo文件被称为WAL文件或XLOG文件,存放在$PGDATA/pg_xlog或($PGDATA/pg_wal)目录中(PostgreSQL从10版本开始,将所用xlog相关的全部用wal替换了)。任何试图修改数据库数据的操作都会写一份日志到磁盘。

本文举例的数据库版本为(PostgreSQL)11.5

PostgreSQL的xlog/Wal归档及日志清理

wal命名格式文件名称为16进制的24个字符组成,每8个字符一组,每组的意义如下:

000000010000000000000001------------------------时间线逻辑id物理id

通过select pg_switch_xlog();或select pg_switch_wal();可以切换xlog/wal日志。

PostgreSQL的xlog/Wal归档及日志清理

归档目录

如果开启了归档,则在归档路径下的archive_status目录里,会有类似000000010000000000000002.ready和000000010000000000000003.done的文件。

.ready表示XLOG文件已写满,可以调用归档命令了,.done表示已归档完成。开启了归档后,只有归档成功的pg_xlog文件才会被清除。在每次归档命令被执行后,会触发清除标签的动作,在执行检查点时,也会触发清除归档标签文件的动作。

PostgreSQL的xlog/Wal归档及日志清理

影响wal保存的最大个数的参数

checkpoint_segments和wal_keep_segments,checkpoint_completion_target

通常地说,WAL最大个数不超过:(2+checkpoint_completion_target)*checkpoint_segments+1在流复制环境下,WAL最大数不超过:wal_keep_segments+checkpoint_segments+1

超过的话会自动清理。

默认的WAL segments为16M,这个参数在PG编译执行 ./configure 时,指定“–with-wal-segsize=target_value”参数设置。

手动清理wal(通常情况下尽量让数据库自动清理,避免错误操作)

如果配置了archive_mode=on,但是没有配置archive_command,那么xlog文件会一直堆积(xlog写完后,会写.ready,但是由于没有配置archive_command,也就是说不会触发归档命令,所以一直都不会写 .done),所以xlog会一直不清理。

1)读取控制文件,找到能清理的xlog范围

pg_controldata $PGDATA

PostgreSQL的xlog/Wal归档及日志清理

表示000000010000000000000009之前的文件可以删除

2)通过pg_archivecleanup清理

[postgres@t1ysl bin]$ pg_archivecleanup -d $PGDATA/pg_wal 000000010000000000000009

PostgreSQL的xlog/Wal归档及日志清理

相关内容

热门资讯

阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
氢氧化钠俗称 氢氧化钾俗称 初中化学中不少化学物质都有着俗称,同学们在日常学习生活中也能经常遇到,今天,小编就搜集了一些初中化学...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...