pg_archivecleanup清理wal日志

这篇具有很好参考价值的文章主要介绍了pg_archivecleanup清理wal日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、 注意事项

       pg_archivecleanup代码中仅进行了wal日志文件名的对比,没有实现对WAL日志名及对应生成时间的判断。在WAL日志未被重命名时,时间与日志名顺序名一致,没有问题。一旦WAL日志被重命名,pg_archivecleanup清理就可能清理掉比指定文件更新的WAL日志。

       因此,在涉及主从尤其是有lag的情况下,非必要不建议使用。

            if ((IsXLogFileName(walfile) || IsPartialXLogFileName(walfile)) &&
                strcmp(walfile + 8, exclusiveCleanupFileName + 8) < 0)
            {
                char        WALFilePath[MAXPGPATH * 2]; /* the file path
                                                         * including archive */
...
                rc = unlink(WALFilePath);
                if (rc != 0)
                {
                    pg_log_error("could not remove file \"%s\": %m",
                                 WALFilePath);
                    break;
                }
            }

二、 清理步骤

        真正到了必要的时刻,例如剩余磁盘空间已不足10%甚至5%,必须先检查从库所需日志与待清理日志间的新旧。

1. 检查从库所需日志

select pg_walfile_name(sent_lsn) sent_wal,pg_walfile_name(write_lsn) write_wal,pg_walfile_name(replay_lsn) replay_wal,write_lag,replay_lag from pg_stat_replication ;

         sent_wal         |        write_wal         |    write_lag   

--------------------------+--------------------------+------------------

 00000003001281A1000000BE | 00000003001281A1000000BD | 02:16:25.554727 

(1 row)

       以上面结果为例,write_wal 是从库正在接收的最新日志,理论上从write_wal 对应日志往前推就可以,安全起见可以再往前推一段。

2. 确认待清理日志

       例如当前write_wal为 00000003001281A1000000BD,那么清理00000003001281A100000000之前的日志应该是安全的。

检查两个文件是否存在

-bash-4.2$ cd $PGDATA/pg_wal

-bash-4.2$ ll -h 00000003001281A1000000BD

-rw-------. 1 postgres dba 16M Jul 24 08:57 00000003001281A1000000BD

-bash-4.2$

-bash-4.2$ ll -h 00000003001281A100000000

-rw-------. 1 postgres dba 16M Jul 24 08:56 00000003001281A100000000

3. dryrun pg_archivecleanup

先检查运行命令之后哪些文件将会被清理,有没有大于write_wal的。当然,在删除量特别大时,基本只能抽查或者搜索。

pg_archivecleanup -d -n $PGDATA/pg_wal 00000003001281A100000000

4. 清理日志

真正执行清理

pg_archivecleanup -d $PGDATA/pg_wal 00000003001281A100000000

5. 清理后检查

检查主从延迟是否还正常运行,若已中断,则下面查询无结果

select from pg_stat_replication;

检查旧日志是否已清理

根据前面-n或者-d的输出,抽查一些日志看是否还存在,检查磁盘空间是否已释放。文章来源地址https://www.toymoban.com/news/detail-618873.html

到了这里,关于pg_archivecleanup清理wal日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • oracle警告日志\跟踪日志磁盘空间清理

    问题现象: 通过查看排查到alert和tarce占用大量磁盘空间 警告日志 /u01/app/oracle/diag/rdbms/orcl/orcl/alert 跟踪日志 /u01/app/oracle/diag/rdbms/orcl/orcl/trace 解决方案: 用adrci清除日志 确定目录 查看homepath是不是所要处理的日志目录 设置homepath(不支持多个路径) 清空警告日志 1440是按分钟算

    2024年02月11日
    浏览(38)
  • 【实战】使用Lua脚本怎么清理redis中的数据【实战】使用Lua脚本怎么清理redis中的数据

    首先我们通过hiredis 向redis 中写入了数据,这里我们主要以测试为目的,所以,Key 值设定为毫秒级时间戳。 但是当我们测试完成之后,需要验证实际情况,这里我们直接使用redis-cli 登录数据库看看。 本次测试完成,接下来要结合业务开始测试,需要清理数据库,但是一条一

    2024年02月13日
    浏览(91)
  • 清理docker日志

    1、docker容器的日志一般都保存在系统的/var/lib/docker/containers路径下。 2、查询日志大小 ls -lh $(find /var/lib/docker/containers/ -name *-json.log) 3、清理日志 清理日志有两个办法一个是清空内容,一个是删除日志。使用第二种方法要重启docker truncate -s 0 /var/lib/docker/containers/xxx-json.log  查

    2024年02月11日
    浏览(37)
  • centos清理日志和缓存

    今天使用redmine修改密码,修改报错,再去试试创建用户,创建用户的页面直接报错显示不出来。然后看了一下服务器,发现服务器磁盘空间全部占满了。 CentOS系统也会在使用很长一段时间后出现硬盘空间开始不够的情况,而这并不一定是正常使用的文件占用,而是在系统的

    2024年02月07日
    浏览(34)
  • 清理 Oracle 的监听日志

    用户的双节点 Oracle 11g rac 集群,近期发现硬盘空间使用过多,其中的一个节点【/oracle】目录空间使用了接近 90%,另一个节点使用了 95%。以其中的一个节点为例,详细情况如下: 使用【du】命令查看【/oracle】目录的空间占用情况,发现【/oracle/app/crs_base/diag/tnslsnr/his01/listen

    2024年02月14日
    浏览(46)
  • oracle 清理归档日志

    1. 相关日志 2.  linux定时删除7天前文件  

    2024年02月04日
    浏览(34)
  • Oracle——清理归档日志

    有时候oracle的归档日志满了,导致登录不了oracle。 解决办法,删除归档日志即可。 1、首先使用df -h 查看磁盘使用情况。 查看服务器的磁盘空间: 2、进入oracle的日志目录,清理日志文件, cd /home/oracle19c/dbs/ rm -rf arch*  注:只是清理了文件不能释放空间所以需要使用rman释放

    2024年02月08日
    浏览(36)
  • Linux定时清理日志

    1.先创建出一个一个文件夹用于保存.sh文件 2.创建.sh文件 vim filename,如果文件存在则打开,如果文件不存在则新建。 3.编写删除日志脚本 4.在脚本所在的目录给脚本增加可执行权限 创建好要执行的脚本之后,需要启动linux的crontab来定时执行这个脚本。 1.编辑当前用户的定时任

    2024年02月15日
    浏览(50)
  • linux- 定时任务清理日志

      linux是一个很能自动产生文件的系统,在实际部署运行中,发现日志文件会占用大量内存,且很多日志文件过了时效是可以删除的。本文介绍了CentOS自动删除n天前日志、邮件、备份等相关文件的过程。 查找命令: find 对应目录 -mtime +天数 -name \\\"文件名匹配逻辑\\\" 具体参数

    2024年02月14日
    浏览(46)
  • SQL Server 日志清理

    因为数据量较大,对数据库表操作比较多,日志的模式,又是完全模式,所以会产生较大的日志文件,那么怎么清理呢 下面给大家介绍3种方式: 1、执⾏SQL命令 先查询日志中文件名和大小 可以看到其中name字段为数据库日志名称\\\" 数据库日志名称 \\\",size是日志大小。接下来就

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包