WALWrite Ahead Log的简写,和oracle的redo日志类似,存放在$PGDATA/pg_xlog中,10版本以后在$PGDATA/pg_wal目录.

1、如果开启了归档,在目录archive_status下会有一些文件,以ready结尾的,表示可以归档但还没有归档,done结尾的表示已经归档。

WAL日志数量相关的几个参数:

2、如果没有开启归档的情况下:

不超过以下两个公式计算得出的个数:

  • (2 + checkpoint_completion_target) * checkpoint_segments + 1
  • 或者checkpoint_segments + wal_keep_segments + 1

9.5以后,如果超过了max_wal_size,那么就会删除不需要的wal.

如果开启了归档,那么归档成功了,才会被清除,所以这里注意一下,如果你开启了归档,但是归档命令是失效的,那么wal目录会一直增长,不会自动删除WAL,会使得此目录被撑爆

3. 什么情况下回自动清理wal

  1. 做检查点的时候;

  2. 数据库启动的时候,或者修改了相关参数后重启数据库。

    触发检查点的情况:

  3. 从前一个检查点发生过后的时间超过checkpoint_timeout设置的间隔(默认间隔为300秒(5分钟))。

  4. 在版本9.4或更早版本中,自上一个检查点以来,超过使用checkpoint_segments(默认数量为3)设置的WAL段文件数量。

  5. 在9.5或更高版本中,pg_xlog(版本10或更高版本,pg_wal)中WAL段文件的总大小已超过参数max_wal_size的值(默认值为1GB(64个文件))。

  6. PostgreSQL服务在smart和fast模式下停止。

  7. 手动执行checkpoint.

3. 如何手动清理wal

可以通过缩小以上涉及到的函数减少wal segment的数量,也可以手动删除,如下:

这里表示16/79FF54E8检查点已经执行,已经包含在00000001000000160000001E日志文件中,那么这个日志之前的日志是可以清理的。

可以手动使用系统命令rm清理,也可以使用pg_archivecleanup清理
比如:

或者直接删除指定前几天日志

find ./ -mtime +10 -exec rm -f {} \; #删除10天以前的所有日志。

Postgresql清理WAL日志的更多相关文章

  1. postgresql如何维护WAL日志/归档日志

    WAL日志介绍 wal全称是write ahead log,是postgresql中的online redo log,是为了保证数据库中数据的一致性和事务的完整性.而在PostgreSQL 7中引入的 ...

  2. KingbaseES V8R6 集群环境wal日志清理

    案例说明: 1.对于集群中的wal日志,除了需要在备库执行recovery外,在集群主备切换(switchover或failover)时,sys_rewind都要读取wal日志,将数据库恢复到一致性状 ...

  3. WAL日志文件名称格式详解

    转自:http://blog.osdba.net/534.html WAL日志文件名称格式详解 PostgreSQL的WAL日志文件在pg_xlog目录下,一般情况下,每个文件为16M大小: osdb ...

  4. PostgreSQL 预写日志机制(WAL)

    关于持久性 持久性是指,事务提交后,对系统的影响必须是永久的,即使系统意外宕机,也必须确保事务提交时的修改已真正永久写入到永久存储中. 最简单的实现方法,当然是在事务提交后立即刷新事务修改后的数据到磁 ...

  5. PostgreSQL WAL日志详解

    wal日志即write ahead log预写式日志,简称wal日志.wal日志可以说是PostgreSQL中十分重要的部分,相当于oracle中的redo日志. 当数据库中数据发生变更时:chang ...

  6. PostgreSQL日志号LSN和wal日志文件简记

    弄明白日志号的原理之后,一段时间又有点忘记了,干脆整理一遍: (一)wal文件命名规则 1)在$PGDATA目录下面的pg_xlog目录中存放着xlog日志文件(10.1之后变为了pg_wal): t ...

  7. PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(1)

    在前面的章节中,我们已经理解了各种复制概念.这不仅仅是一个为了接下来将要介绍的东西而增强您的意识的理论概述,还将为您介绍大体的主题. 在本章,我们将更加接近实际的解决方案,并了解PostgreSQL内 ...

  8. PgSQL · 追根究底 · WAL日志空间的意外增长

    问题出现 我们在线上巡检中发现,一个实例的pg_xlog目录,增长到4G,很是疑惑.刚开始怀疑是日志归档过慢,日志堆积在pg_xlog目录下面,未被清除导致.于是检查归档目录下的文件,内容如下.但发现 ...

  9. PostgreSQL配置文件--WAL

    3 WAL WRITE AHEAD LOG 3.1 Settings 3.1.1 fsync 字符串 默认: fsync = on 开启后强制把数据同步更新到磁盘,可以保证数据库将在OS或者硬件崩溃的 ...

  10. [转帖]Postgresql的csv日志设置

    Postgresql的csv日志设置 2012年06月16日 09:27:00 weixin_34406796 阅读数 24   原文链接:https://my.oschina.net/Kenyon/ ...

随机推荐

  1. CTF中RSA常见类型解法

    Python脚本 #十六进制转ASCII编码 import binascii print(binascii.unhexlify(hex(m)[2:])) #rsa import gmpy2 phi = ...

  2. 使用 System.Text.Json 时,如何处理 Dictionary 中 Key 为自定义类型的问题

    在使用 System.Text.Json 进行 JSON 序列化和反序列化操作时,我们会遇到一个问题:如何处理字典中的 Key 为自定义类型的问题. 背景说明 例如,我们有如下代码:   // 定义一 ...

  3. Jmeter 跨线程组传参

    某种情况下需要获取到上个线程组的返回值进行测试,但线程组与线程组之间是相互独立,互不影响.若要得到上个线程组的返回值,则可通过__setProperty()函数将所提取的值设置为jmeter 内置属性 ...

  4. 微服务项目Git仓库自动化脚本

    说明 基于微服务项目,产生的的多项目仓库管理脚本. 目录结构 xxxx Xxx1Api/ Xxx2Api/ git_clone_api.sh git_branch_dev.sh git_pull_al ...

  5. cs231n学习笔记——lecture6 Training Neural Networks

    该博客主要用于个人学习记录,部分内容参考自:[基础]斯坦福cs231n课程视频笔记(三) 训练神经网络.[cs231n笔记]10.神经网络训练技巧(上).CS231n学习笔记-训练神经网络.整理学习之 ...

  6. drf快速使用 CBV源码分析 drf之APIView分析 drf之Request对象分析

    目录 序列化和反序列化 drf介绍和安装 使用原生django写接口 django DRF安装 drf快速使用 模型 序列化类 视图 路由 datagrip 使用postman测试接口 CBV源码分析 ...

  7. 重新捋一捋React源码之更新渲染流程

    前言 前些天在看Dan Abramov个人博客(推荐阅读,站在React开发者的角度去解读一些API的设计初衷和最佳实践)里的一篇文章,其重点部分的思想就是即使不使用Memo(),也可以通过组合的方式 ...

  8. JVM面试大总结

    一.汇总 JVM是运行在操作系统之上的,它与硬件没有直接的交互.先说一下JVM的内存区域,当函数开始运行时,JVM拿到自己的内存将自己的内存区域进行了分割,分为五块区域:线程共享的有堆.方法区,线程私 ...

  9. AtCoder Beginner Contest 282 G - Similar Permutation

    套路题 题意 求有多少个 \(1\) 到 \(n\) 的排列满足恰有 \(k\) 对在排列中相邻的数满足前小于后 \(2 \leq n \leq 500, 0 \leq k \leq (n - 1)\ ...

  10. for循環,逗號運算符,其他(+= -= *= /=)