postgresql数据库定时删除日志

概述

项目使用.net core + Nlog + postgresql的框架存储日志,由于日志记录了每一次的数据库操作、前后端接口调用、mqtt消息等内容,所以存储了大量的日志,就需要定时的去清理过期日志。

首先尝试了使用触发器+函数的方式想要在每一次插入的时候删除过期日志,但是这导致了.net core调用的postgresql数据库的dll报错,无法正常写入数据,所以放弃。

后来选用的postgresql的pgAgent组件,通过定时器的方式触发删除函数,清理过期日志,经测试功能正常。

PGAgent

pgAgent是postgresql自带的一个组件,详细的内容参照
https://blog.csdn.net/weixin_35565325/article/details/112232756 pg 定时删除_PostgreSQL 定时任务
里面关于pgAgent的功能已经说得非常详细,其中有几点需要注意的地方。

  1. 该组件可以通过pgsql自带的stackbuilder进行安装,文章说不行也许是版本的原因,我用的是postgresql 11,在安装pgsql的时候会就有stackbuilder程序,找不到的可以去安装路径下bin目录中找。
    (测试了一下,postgresql 10是没法直接安装这个组件的)
    下载链接:http://sbp.enterprisedb.com/getfile.jsp?fileid=11842
  2. 在连接数据库的时候设置为远程连接的方式,否则会报错连不上。
  3. 远程连接的连接字符串有用户名密码的也要写上去。具体参数设置可以参照官方文档第33.1.1节:https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING

配置

添加定时器

在这里插入图片描述
安装完成pgAgent之后在pgAdmin管理页面上本地服务器可以看到“pgAgent任务”,右键创建新建一个定时器,起名为“auto_del_log”,作业类型默认。启用按钮来控制这个定时器是否工作。

步骤

在这里插入图片描述
步骤就是我们要执行的操作,配置连接字符串,注意这里要选远程连接。
在这里插入图片描述
在“代码”中写自己要执行的sql语句,我这里是将三分钟前记录的日志删除掉。

计划任务

在这里插入图片描述
在“计划任务”中定义自己的定时器,可以配置这个定时器在什么时间段内有效。
在“重复”标签中定义定时器触发的时间,可以设定每个小时的第几分钟触发、每天的几点触发、每月的几号触发等等,也可以任意组合和多选。

这样就配置完成了,可以在数据库中查看效果。

监测

在pgAdmin上会对数据库的状态进行监测。
在这里插入图片描述
点击定时器后在右边会出现定时器状态的页面。
仪表盘”上可以看到定时器的基本状态
属性”可以查看配置以及编辑,可以看到当前定时器是否运行,以及按计划下一次运行是什么时候
SQL”可以看到这个定时器的sql代码
统计信息”可以看到定时器每一次触发的开始时间、结束时间和耗时
在这里插入图片描述
状态栏有三个状态,“f”表示失败,“s”表示成功,“r”表示处理中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值