Shell脚本定时清理PostgreSQL过期数据

前面实现了在数据库中通过编写函数(存储过程)和触发器来清理创建时间七天以上的数据,用的触发策略为insert,即每次插入数据都会触发该清除历史数据的函数,性能上考虑太差了,所以优化为通过shell脚本的形式来定时在每天凌晨两点清除。

shell脚本如下:

#!/bin/sh
# 自动定期删除创建时间大于七天的记录
/home/cms/postgresql/bin/psql -h 127.0.01 -p 5432 -d yourdb -U username --command "delete from user where create_time < (now() - interval '7 day')"

这样可能会有问题,因为连接psql的时候会需要身份验证就要我们手动填写了,违背了我们自动执行脚本的初衷,所以要做一个postgresql的无密码登录。

这里官方文档里面的说明:https://www.postgresql.org/docs/current/libpq-pgpass.html

步骤:

  1. cd ~
  2. vi .pgpass,并加入需要登录的服务器的信息,格式:地址:端口:数据库:用户名:密码
    这里为127.0.0.1:5432:db:root:1234
  3. 保存退出,添加权限 chmod 0600 ~/.pgpass。可用命令ls -al |grep .pgpass查看配置的权限
  4. 使用【psql -h hostname -p port -d database -U username】登录(如上面脚本中)

这时就可以去运行我们上面写好的脚本了,如图:
在这里插入图片描述
crontab -e中加入定时任务,上面的数据库备份为凌晨0点,删除为2点。
在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页