精华内容
下载资源
问答
  • mysql数据库定时清理数据 一:查看调度,设置调度开启 1.查看调度 SELECT @@event_scheduler 2.设置调度开启: – 设置方法(开启) SET @@global.event_scheduler = ON; – 设置方法(关闭) SET @@global.event_...

    mysql数据库定时清理数据
    一:查看调度,设置调度开启
    1.查看调度 SELECT @@event_scheduler
    2.设置调度开启:
    – 设置方法(开启)

    SET @@global.event_scheduler = ON;

    – 设置方法(关闭)
    SET @@global.event_scheduler = OFF;
    二:创建存储过程

    DELIMITER $$
    USE `db`$$
    DROP PROCEDURE IF EXISTS `auto_del_90`$$
    CREATE DEFINER=`root`@`%` PROCEDURE `auto_del_90`()
    BEGIN
    DELETE FROM my_table WHERE CREATE_TIME <= DATE(DATE_SUB(NOW(),INTERVAL 90 DAY));
    END$$
    DELIMITER ;
    

    三:创建事件

    指定时间时间执行,可用户测试存储过程是否有效:

    CREATE DEFINER = `root`@`%` EVENT `event_auto_del_90` 
    ON SCHEDULE AT '2020-11-27 09:46:01' 
    ON COMPLETION PRESERVE
    ENABLE 
    DO 
    	CALL auto_del_90 ();
    

    创建周期性执行事件(每周执行):

    CREATE DEFINER = `root`@`%` EVENT `event_auto_del_90` ON SCHEDULE
     EVERY 1 WEEK STARTS '2020-11-27 10:03:06' ON COMPLETION 
     PRESERVE
     ENABLE 
    DO
    	CALL auto_del_90 ()
    

    说明:创建事件时有一个参数 PRESERVE
    PRESERVE:当事件指定了ends,事件到期后不会drop
    NOT PRESERVE :当事件指定了ends,事件到期后会drop该事件

    展开全文
  • 其实实现数据库的日志清楚,有很多方法,最简单的就是配置一个数据库定时任务,定时删除旧数据就行。但是数据库定时器缺乏灵活性,如果需要修改时间节点。就需要重新修改编译定时器,对于维护人...

    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 communication_filed_logs where time<'$datestr'"
    #执行sql语句
    result=`psql -h 127.0.0.1 -p 5432 -U bs --command "$delsql"`
    
    currtime=`date +"%Y%m%d%H%M%S"`
    deletelog="./deletelog.log"
    #记录操作到日志文件
    echo "'$currtime' -[success] clear table communication_filed_logs old data , '$result'">>$deletelog
    
    dellogssql="DELETE FROM bs_filed_logs where time<'$datestr'"
    logresult=`psql -h 127.0.0.1 -p 5432 -U bs --command "$dellogssql"`
    echo "'$currtime' -[success] clear table  bs_filed_logs old data , '$logresult'">>$deletelog
    展开全文
  • 数据库开启定时任务清理垃圾数据 Navcat 可以快速在事件菜单里面新建定时的任务。 新建后不会执行。 需要在数据库中开启设置: show variables like '%sche%';运行此命令查询一下事件执行是否开启 event_scheduler...

    数据库开启定时任务清理垃圾数据

    Navcat 可以快速在事件菜单里面新建定时的任务。

    新建后不会执行。

    需要在数据库中开启设置:

    show variables like '%sche%';运行此命令查询一下事件执行是否开启
    
    event_scheduler 这一列是ON/OFF
    

    一次性设置自动执行mysql事件 重启电脑后就没了

    set global event_scheduler =1
    2. 永久

    vi /etc/my.cnf 在[mysqld]下增加一行内容:
    event_scheduler=ON
    保存文件,重启数据库,重新操作即可
    这样就ok了

    展开全文
  • crontab 定时清理数据库数据

    千次阅读 2014-10-27 17:12:34
    昨天写了个shell脚本,功能是定期清理3天前的数据记录。 脚本如下: #! /bin/bash   HOSTNAME="172.16.10.202" #数据库信息 PORT="3306" USERNAME="root" PASSWORD="uarefool"   DBNAME="vooleperf" 
    昨天写了个shell脚本,功能是定期清理3天前的数据记录。
    脚本如下:
    #! /bin/bash
     
    HOSTNAME="172.16.10.202"                   #数据库信息
    PORT="3306"
    USERNAME="root"
    PASSWORD="uarefool"
     
    DBNAME="vooleperf"                      #数据库名称
    TIME=`date +"%y""%m"`
    TABLENAME="exceptionlog$TIME"                #数据库中表的名称
     
    DEL_TIME=`date -d "-3 day" +"%y"-"%m"-"%d"`
    echo $DEL_TIME
     
    TIME=`date -d "-1 month" +"%y""%m"`
    DEL_TABLE="exceptionlog$TIME"
     
    del_sql="delete from $TABLENAME where stamp<=\"$DEL_TIME\""
    echo $del_sql
    mysql -h${HOSTNAME}   -P${PORT}   -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${del_sql}"
     
    del_sql="drop table $DEL_TABLE"
    echo $del_sql
    mysql -h${HOSTNAME}   -P${PORT}   -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${del_sql}"
     
    执行成功后,crontab -e
    在最后一行加入:
    */1 * * * * /home/liuting/test/1.sh >/dev/null 2>&1
    保存,退出。
    发现问题,shell脚本并没有执行。
    cat /var/log/cron | grep "1.sh"
    看看是否执行了!
    结果是crontab执行了。
    后来修改crontab -e,变为:
    */1 * * * * /home/liuting/test/1.sh >/tmp/mysql.log 2>&1
    保存,退出。此目的是看crontab的看看输出日志,就知道原因了!
    原因就在于无法找到mysql。
    然后,查找mysql安装目录:
    [root@localhost root]# find / -name mysql -print
    /var/lib/mysql
    /var/lib/mysql/mysql
    /var/lock/subsys/mysql
    /etc/rc.d/init.d/mysql
    /etc/logrotate.d/mysql
    /usr/bin/mysql
    /usr/lib/mysql
    /usr/share/mysql
    [root@localhost root]# find /usr -name mysqldump -print
    /usr/bin/mysqldump
    查到mysqldump路径
    按着上面的方法,我找到mysql的路径,并修改shell脚本。如下:
    #! /bin/bash
     
    CMD_MYSQL=/opt/mysql/bin/mysql
     
    HOSTNAME="172.16.10.202"                   #数据库信息
    PORT="3306"
    USERNAME="root"
    PASSWORD="uarefool"
     
    DBNAME="vooleperf"                      #数据库名称
    TIME=`date +"%y""%m"`
    TABLENAME="exceptionlog$TIME"                #数据库中表的名称
     
    DEL_TIME=`date -d "-3 day" +"%y"-"%m"-"%d"`
    echo $DEL_TIME
     
    TIME=`date -d "-1 month" +"%y""%m"`
    DEL_TABLE="exceptionlog$TIME"
     
    del_sql="delete from $TABLENAME where stamp<=\"$DEL_TIME\""
    echo $del_sql
    $CMD_MYSQL -h${HOSTNAME}   -P${PORT}   -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${del_sql}"
     
    del_sql="drop table $DEL_TABLE"
    echo $del_sql
    $CMD_MYSQL -h${HOSTNAME}   -P${PORT}   -u${USERNAME} -p${PASSWORD} ${DBNAME} -e "${del_sql}"
     
    运行成功了,和环境变量没有任何关系,呵呵,解决!
    展开全文
  • 结合Oracle Exp 数据备份命令实现自动数据定时冷备份,不会影响数据库的正常运行。同时提供了备份数据压缩功能,既节省空间又可以保存备份数据不被误认为是系统备份文件而被清理工具清理掉. 注明:这个是应用执行...
  • 数据库操作指南:MySql定时清理某个时间之前的数据 作者:andy0012019.11.22来源:Web前端之家浏览:2081评论:0 关键词:jsmysql 一个项目如果规划不合理,每天会产生很多条告警,导致查询速度变慢。同时...
  • crontab 定时清理数据库数据---mysql

    千次阅读 2017-03-22 16:15:05
    昨天写了个shell脚本,功能是定期清理3天前的数据记录。 脚本如下: #! /bin/bash   HOSTNAME="172.16.10.202" #数据库信息 PORT="3306" USERNAME="root" PASSWORD="uarefool"   DBNAME="vooleperf"
  • 数据库数据和日志设置定时清理原理(适用于数据仓库,累积历史性数据库表) 1.新建一个记录需要清理数据的表 select * from mid.[dbo].t_clear_data_table --插入数据脚本 INSERT INTO mid.[dbo].[t_clear_data_...
  • 定时清理数据--定时操作

    千次阅读 2018-05-17 13:11:55
    数据进行定时控制: 一半用于定时清理数据库的Log,防止数据库存储过多而崩溃。步骤: 第一步:找到SQL Server代理的作业文件夹--》新建作业 第二步:常规:只写名称,更改所有者 第三步:步骤:新建步骤--》...
  • 定时任务: crontab -e 编辑 #定时器定时备份数据库数据(每分钟执行一次) # */1 * * * * /home/testbackupsql.sh > /tmp/testbackup.log 2>&1 #定时任务每天两点执行数据库备份任务 0 2 * * * /home/testbackupsql...
  • 写一个订单页面,为了防止顾客提交订单但是没有付款,一段时间后,需要对数据进行老化操作,问数据库如后定时清理数据
  • MS SQL数据库日志清理

    2018-11-27 10:00:01
    sql server 2008 数据库使用日志记录会大量占用硬盘空间,使得数据库的性能下降,需要我们不定时清理释放空间;本文记录下清理日志的两种操作; 一、快速收缩数据库 DBCC SHRINKFILE 收缩当前数据库的指定数据或...
  • 项目使用.net core + Nlog + postgresql的框架存储日志,由于日志记录了每一次的数据库操作、前后端接口调用、mqtt消息等内容,所以存储了大量的日志,就需要定时的去清理过期日志。 首先尝试了使用触发器+函数的...
  • 三、定时清理 binlog 日志 最近磁盘增长的非常快,发现binlog日志占用很大的磁盘资源。我们采用手动清理,后面设置一下自动清理。 查看指定删除日志 mysql >show binary logs; 查看多少binlog日志,占用多少...
  • 数据导入mongodb的测试环境中,使用如下命令, -d表示数据库名称,默认文件名作为 collections 的名称 mongoimport -d test --file chat_item.bson 导入进去的数据日期类型被转换成为了字符串,需要进行转换...
  • 有以下这个情况: 数据库要求数据量不太于500MB,就需要定期清理数据库,并备份文件。当需要查询时,要求把该备份文件导入。 或者有没有其他好的方式?主要是定期清理备份,并满足备份数据查询
  • Shell脚本定时清理PostgreSQL过期数据

    千次阅读 2019-05-15 19:19:12
    前面实现了在数据库中通过编写函数(存储过程)和触发器来清理创建时间七天以上的数据,用的触发策略为insert,即每次插入数据都会触发该清除历史数据的函数,性能上考虑太差了,所以优化为通过shell脚本的形式来...
  • 思路:数据导出+定时备份+数据循环清理1、拷贝Oracle安装目录bin下面exp.exe(也可设置exp.exe环境变量) 至备份文件夹 oraclebackup文件(没有可以新建)2、导出数据xxx库 新建文件夹编辑 @echo off echo 删除10天...
  • 游戏服务器运行过程中,每天都会产生大量log数据,包括数据库日志数据跟后台打印日志,需要定时清理 一.linux定时清理log文件 1.删除文件命令: find 对应目录 -mtime +天数 -name "文件名" -...
  • 项目需求数据库只保存两天的数据,需要定时清理。本文程序设定每天凌晨3点定时清理数据库,使用threading模块另起线程。 import threading import datetime def suspect_current_clear(): from app.db.db import ...
  • 但日志表在保存过一段时间后,需要定时清理,而好多项目中,多采用数据库JOB针对每个日志表单独清理,这种方式的缺点:1)新增日志表清理开发工作量大;2)相同逻辑处理,但因清理周期不同,存在大量相同代码;3)...
  • 最近新系统上线,运行一个月后发现系统日志占用空间很大,数据库中流水表数据也达到了上千万条,所以编写该shell脚本用来定时清理日志和数据库临时数据。我们的系统应用日志是往一个日志文件中不停写入,不会按日期...
  • mysql定时清理任务

    2021-01-22 23:25:19
    数据库运行在一个平稳的环境中,主要方法是通过定时事件,触发清理任务。 查看是否开启了事件功能 mysql> show variables like '%event_sc%'; +-----------------+-------+ | Variable_name | Value | +------...
  • 数据库定时任务

    2017-07-26 23:19:15
    linux下的定时任务:清理磁盘,监控磁盘空间,监控各个线程是否正常   手机套餐更改生效:次月1号 ----打电话要更改套餐 ------移动记录了更改后的套餐 -------下个月1号,自动更改套餐,没有人触发 -----每...
  • 在我们项目中由于不清理数据,一个表占的空间竟然达到了4G之多。想想有多可怕…  这里介绍的是用MySQL 建立一个定时器Event,定期清除掉之前的不必要事件。 二、内容 #1、建立存储过程供事件调用 delimiter// drop...
  • Oracle 定时清理归档日志脚本

    千次阅读 2019-07-25 09:00:12
    1 报错信息 数据库报如下错误: ora-27101: shared memory realm does not exist ora-01034: oracle not ...原因:由于数据库归档日志满了,不能继续往数据库里写数据。 2 查看归档日志大小 # su - oracle $...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 228
精华内容 91
关键字:

数据库定时清理数据