Shell脚本定时清理Postgres数据库中历史数据
来源:互联网 发布:大数据世界小说txt 编辑:程序博客网 时间:2024/05/16 04:42
Shell脚本定时清理Postgres数据库中历史数据
在系统日常运行中,会产生大量的日志,日志表会越来越加庞大。特别是对于云服务器使用者来说,每一块的空间都是很宝贵的。所以定时清理掉无用的历史日志,就显得很有意义了。其实实现数据库的日志清楚,有很多方法,最简单的就是配置一个数据库定时任务,定时删除旧数据就行。但是数据库定时器缺乏灵活性,如果需要修改时间节点。就需要重新修改编译定时器,对于维护人员来说,可操作性不强。本文主要介绍使用shell脚本读取配置文件,通过cronjob来实现。
配置postgres无密码登陆
编写配置文件
编写shell脚本
配置postgres无密码登陆
如果用psql命令直接登陆,会提示输入密码(psql并没有提供-password选项),就使得整个过程必须要人操作才能继续)。所以需要配置postgres无密码登陆
有多种方法可以实现postgres无密码登陆,这里采用应用比较广泛,官方推荐的使用密码文件.pgpass无密码登陆方式。
操作步骤:
1.cd ~
2.vi .pgpass,并加入需要登录的服务器的信息,格式:地址:端口:用户名:密码
3.保存退出,添加权限 chmod 0600 ~/.pgpass。可用命令ls -al |grep .pgpass查看配置的权限
4.使用【psql -h 地址 -p 端口 -U 用户名】登录
5.我的配置:127.0.0.1:5432:kddi_bs:kddi_bs:kddibs
官方参考资料https://www.postgresql.org/docs/current/static/libpq-pgpass.html,英文好的同学可以自行参考。
编写配置文件
这里就比较简单,贴上我的配置
dbdate=180 #设置数据库清除天数filedate=180 #设置日志文件清除天数
编写shell脚本
这里就是本文的核心重点,先贴出代码,在代码里面有注释
#!/bin/sh#取出配置文件中配置的时间节点ndate=`sed '/^dbdate=/!d;s/.*=//' dbinfo.conf`#计算出时间字符串datestr=`date -d "-$ndate day" +%Y%m%d%H%M%S`#编写sql语句delsql="DELETE FROM kddi_communication_filed_logs where time<'$datestr'"#执行sql语句result=`psql -h 127.0.0.1 -p 5432 -U kddi_bs --command "$delsql"`currtime=`date +"%Y%m%d%H%M%S"`deletelog="./deletelog.log"#记录操作到日志文件echo "'$currtime' -[success] clear table kddi_communication_filed_logs old data , '$result'">>$deletelogdellogssql="DELETE FROM kddi_bs_filed_logs where time<'$datestr'"logresult=`psql -h 127.0.0.1 -p 5432 -U kddi_bs --command "$dellogssql"`echo "'$currtime' -[success] clear table kddi_bs_filed_logs old data , '$logresult'">>$deletelog
- Shell脚本定时清理Postgres数据库中历史数据
- mongoDB 定时清理历史数据
- 数据库-2 历史数据清理
- shell,数据库定时备份及清理
- 定时清理Oracle数据库中不活动的session的脚本,解决ora-12516问题
- linux shell脚本定时清理tomcat日志文件(初稿)
- 清理oracle10g日志----shell脚本定时任务执行rman
- 数据库定时删除历史数据的SQL指令
- Oracle 12c数据库定时备份和清理脚本
- Debian定时备份postgres数据库
- shell 脚本实现定时备份数据库表
- 定时任务中shell脚本的执行
- linux 日志定时清理脚本
- 办公系统数据库分区及历史数据清理优化方案一
- 通达OA数据库优化方案之_历史数据清理
- 历史数据清理--方案
- 数据库日志清理脚本
- linux利用shell脚本和cron实现定时备份、上传及垃圾日志清理(原创)
- SpringBoot定时任务
- ORACLE触发器详解
- RabbitMQ入门教程(十五):普通集群和镜像集群
- Linux下MySQL数据库常用基本操作
- 如何在CentOS 7上安装MySQL
- Shell脚本定时清理Postgres数据库中历史数据
- Ionic使用
- android:layout_gravity和android:gravity的区别
- babel-preset-es2015安装
- Oracle的账户信息
- 数据结构实验之图论八:欧拉回路
- Android SDK下载安装及配置教程
- PLA
- C#使用phantomjs对网页截图