详情页标题前

阿里云RDS数据库定时任务(pg_cron)-云淘科技

详情页1

本文介绍如何通过RDS PostgreSQL提供的pg_cron插件设置定时任务

前提条件

  • 实例为RDS PostgreSQL 10或以上版本

  • 实例内核小版本为20230830或以上。

    重要

    20230830内核小版本之前已支持此插件,但为了规范插件管理,提升RDS PostgreSQL在插件侧的安全防护,RDS计划在内核版本迭代中陆续对部分存在安全风险的插件进行优化,部分插件在低内核小版本无法创建,更多信息,请参见【产品/功能变更】RDS PostgreSQL限制创建插件说明。

    • 如果您在20230830内核小版前已经使用了此插件,则不影响使用。

    • 如果您首次创建或重新创建此插件,请升级内核小版本到最新。

  • 使用该插件前,需要将pg_cron加入到shared_preload_libraries参数中。

    您可以使用RDS PostgreSQL参数设置功能,为shared_preload_libraries参数添加pg_cron。具体操作,请参见设置实例参数。

背景信息

pg_cron是基于cron的作业调度插件,语法与常规cron相同,但它可以直接从数据库执行PostgreSQL命令。

每一个定时任务分为两部分:

  • 定时计划

    规定使用插件的计划,例如每隔1分钟执行一次该任务。

    定时计划使用标准的cron语法,其中*表示任意时间都运行,特定数字表示仅在这个时间时运行

     ┌───────────── 分钟: 0 ~ 59
     │ ┌────────────── 小时: 0 ~ 23
     │ │ ┌─────────────── 日期: 1 ~ 31
     │ │ │ ┌──────────────── 月份: 1 ~ 12
     │ │ │ │ ┌───────────────── 一周中的某一天 :0 ~ 6,0表示周日。
     │ │ │ │ │                  
     │ │ │ │ │
     │ │ │ │ │
     * * * * *

    例如每周六3:30am(GMT)的语法为:

    30 3 * * 6
  • 任务内容

    用户具体的任务内容,例如select * from some_table

注意事项

  • 定时任务执行的时间是GMT时间,请注意换算时间。

  • 定时任务都储存于默认数据库postgres中,但是您可以在其他数据库上查询定时任务。

  • RDS PostgreSQL 10、11、12在20201130内核小版本之前已支持pg_cron插件,但由于pg_cron插件已升级,推荐升级内核小版本,如果您在升级前已经在使用pg_cron,请重新创建插件来使用新的特性,但是重新创建后原有定时任务会丢失。

使用方法

重要

如下使用方法仅适用于内核小版本小于20230530的RDS PostgreSQL,如果您的内核版本大于等于20230530,则pg_cron插件的具体用法,请参见官方文档。

  • 创建插件

    CREATE EXTENSION pg_cron;

    说明

    • 仅高权限账号可以执行此命令。

    • 该命令仅支持在数据库postgres中使用,如果在其他数据库执行,则会报错ERROR: can only create extension in database postgres

  • 删除插件

    DROP EXTENSION pg_cron;

    说明

    仅高权限账号可以执行此命令。

  • 执行某个任务

    SELECT cron.schedule('', '')

    示例

    -- 周六3:30am (GMT) 删除过期数据。 
    SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
    
    ----------
    
    -- 每天的10:00am (GMT) 执行磁盘清理。
    SELECT cron.schedule('0 10 * * *', 'VACUUM');
    
    ----------
    
    -- 每分钟执行指定脚本。
    SELECT cron.schedule('* * * * *', 'select 1;');
    
    ----------
    
    -- 每个小时的23分执行指定脚本。
    SELECT cron.schedule('23 * * * *', 'select 1;');
    
    ----------
    
    -- 每个月的4号执行指定脚本。
    SELECT cron.schedule('* * 4 * *', 'select 1;');
  • 指定数据库执行任务

    SELECT cron.schedule('', '', '')

    说明

    不指定数据库时会使用配置文件中的默认数据库postgres。

  • 删除某个任务

    SELECT cron.unschedule()

    示例

    SELECT cron.unschedule(43);
  • 查看当前任务列表

    SELECT * FROM cron.job;

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/154887.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 阿里云日志服务SLS统计图表(Pro版本)概述-云淘科技

    日志服务支持通过统计图表的方式对查询分析结果进行可视化展示。统计图表(Pro版本)支持展示多个查询分析结果,并支持对不同查询分析的结果进行个性化的可视化设置。 注意事项 已配置索引并开启分析功能,即在查询分析面板中打开对应字段的开启统计开关。具体操作,请参见配置索引。 执行查询分析语句(查询语句|分析语句)后,日志服务才会以统计图表方式展示查询分析结果。 图…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云ECS云服务器ECS实例自定义数据概述-云淘科技

    实例自定义数据可用于管理ECS实例的启动行为或者向实例传入普通数据。 实例自定义数据介绍 Linux实例和Windows实例均支持实例自定义数据功能,主要有以下用途: 作为实例自定义脚本在启动实例时执行,实现自动化配置实例,例如自动获取软件资源包、开启服务、打印日志、安装依赖包、初始化Web服务环境等的操作。 仅作为普通数据传入实例,方便您在实例中使用这些数…

    阿里云服务器 2023年12月9日
  • 阿里云日志服务SLSStorm消费-云淘科技

    日志服务LogHub提供了高效、可靠的日志通道功能,您可以通过Logtail、SDK等多种方式来实时采集日志数据。采集日志数据之后,可以通过Storm实时消费写入到日志服务中的数据。为了降低Storm消费的代价,日志服务提供了LogHub Storm Spout来实时读取日志数据。 基本结构和流程 图 1. 基本结构和流程 上图中红色虚线框中是LogHub …

    2023年12月10日
  • 阿里云日志服务SLS为定时SQL任务设置告警-云淘科技

    日志服务定时SQL已内置监控规则模板,您只需添加对应的告警实例即可实时监控定时SQL任务,并可通过钉钉等渠道接收到告警通知。本文介绍设置告警的相关操作。 前提条件 已创建定时SQL任务。 如果是将源Logstore中的数据通过定时SQL处理后存储到目标Logstore,请参见从Logstore到Logstore。 如果是将源Logstore中的数据通过定时S…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS授权概述-云淘科技

    您使用数据加工功能时,涉及数据加工操作权限和数据访问权限。 如果您使用的是阿里云账号,直接执行加工任务访问数据授权。 注意 为了保障您的云资源安全,建议使用RAM用户。 如果您使用的是RAM用户,则需执行数据加工操作授权和加工任务访问数据权限。 数据加工操作权限 数据加工操作包括创建、删除、修改、查看数据加工任务,在控制台上进行加工预览。 阿里云账号:具备日…

    阿里云日志服务SLS 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。