tencent cloud

文档反馈

pgAgent 插件

最后更新时间:2024-03-21 11:30:27
    本文介绍如何通过 pgAgent 功能来实现云数据库 PostgreSQL 的自动任务执行。推荐使用 pg_cron 插件实现定时的功能。

    简介

    如果业务需要定期清理数据库中的多余数据,定时做物化视图更新,定时 vacuum full,定时执行 DML 等数据库中需要定时做的事情,在 PostgreSQL 中可以通过以下功能来实现:
    Linux 的 crontab 功能
    pgadmin 的 pgAgent 功能
    pgAgent 是 pgAdmin 工具中的一个插件,在 pgAdmin III v1.4 版本中引用。主要用于 PostgreSQL 的作业调度代理,能够在复杂的时间表上运行多步批处理 shell 和 SQL 任务。 需要注意的是,pgAgent 需要一些数据库表和其他对象的支持,因此需要先安装 pgAgent 插件。

    操作方法

    配置 pgAgent

    1. 登录 PostgreSQL 实例,登录完成后,创建您的业务数据库。
    2. 在需要开通 pgAgent 功能的 database 以及 postgres 库中分别执行以下语句:
    注意:
    一定要在 postgres 库中也创建 pgagent。
    psql > create extension pgagent;
    CREATE EXTENSION
    3. 配置反馈完成后,您需要通过 pgAgent 工具开启任务调度程序。 登录 CVM(建议 CVM 与 PostgreSQL 同一 VPC),根据实际数据库版本选择 pgAgent 版本,本文以11.8版本为例,安装 下载地址 中的 pgagent。
    4. pgAgent 工具安装完成后,执行以下语句启动任务调度程序:
    说明:
    请根据实际安装的 pgAgent 版本来使用命令,如果安装的是10版本,则为 pgagent_10。
    请注意 dbname 一定需要填写 postgres,不能填写需要执行定时调度程序的 database,否则 pgAdmin 的页面中无法显示 job 配置项。
    当连接执行时候,报错 ERROR: Unsupported schema version,请 提交工单 进行处理。
    pgagent_11 hostaddr=IP地址 dbname=postgres user=用户名 port=端口 password=密码
    5. 执行成功后,无任何回显提示,您可以使用以下命令来判断进程是否启动成功:
    执行此语句,如果存在 pgagent 进程,则表示已经启动成功。
    # ps -ef |grep pgagent
    root 158553 1 0 Oct30 ? 00:00:15 pgagent_11 hostaddr=IP地址 dbname=postgres user=用户名 port=端口 password=密码

    通过 pgAdmin 配置 pgAgent Jobs

    1. 登录 PostgreSQL 控制台,在实例列表单击实例 ID,进入实例详情页,开启外网地址。
    2. 打开 pgAdmin 4,通过外网地址访问您的 PostgreSQL,此时可以在界面中看到 pgAgent Jobs。
    
    
    3. 在 pgAdmin 界面,右键选择 pgAgent Jobs > Create > Create Jobs,创建定时任务。
    4. 在 General 界面,配置基础 Job 信息。
    
    
    5. 进入 Step 界面,配置关于需要定时执行的内容,单击右上角的**+**添加一个 Step,为此 Step 配置一个名字,然后在 Code 子标签中配置需要执行的 SQL 语句等内容。
    
    
    6. 进入 Schedules 界面,配置任务执行的调度信息:
    7. 在下方 General 子标签中,主要配置任务生效时间。
    8. 在下方 Repeat 子标签中,配置 crontab 风格的执行计划。
    
    
    9. 完成时间配置之后,也可以在 Exceptions 子标签中配置不执行任务的时间。
    10. 最后单击 Save 保存,此任务将根据配置的内容进行自动执行。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持