postgresql pgagent安装测试定时任务

  pgagent 作为postgresql的一个任务调度代理,在postgresql 9.0 以前 是附带在pgadmin 包下面 的,只是默认不安装,9.0之后作为了一个单独是的安装包。所以要使用pgagent定时任务调度的话还得单独安装。

安装方式

本人选择的安装方式是用docker-compose分别安装的postgreSQL和pgamdin,由于docker hub上找的的pgagent在安装的过程中一直出错,所有最后采取yum的方式安装的pgagent。

安装过程

1、docker-compose安装postgrelSQL和pgadmin

version: "2.1"
services:
  postgrestest:
    image: postgres:11.5
    restart: unless-stopped
    environment:
      POSTGRES_DB: db1
      POSTGRES_USER: root
      POSTGRES_PASSWORD: 123456
    ports:
      - 5432:5432
    volumes:
      - /data/postgresql1:/var/lib/postgresql/data
  pgadmin4:
    image: dpage/pgadmin4
    restart: unless-stopped
    ports:
      - 8001:80
    environment:
      PGADMIN_DEFAULT_EMAIL: 123@qq.com
      PGADMIN_DEFAULT_PASSWORD: 123456

2、yum安装pgagent

先查找pgagent版本

yum search pgagent

此处是查找不到相关资源的,需要更改资源地址

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 

然后再进行search

由于我安装的postgresql是11.版本,所以下载11版本的pgagent

yum install pgagent_11.x86_64

安装成功后查询一下pgagent的安装路径

find -name pgagent_11

运行路径应该是最后一个,运行pgagent

 

/usr/bin/pgagent_11 host=localhost port=5432 dbname=db1 user=root password=123456

其中port,dbname ,user ,password为连接postgresql的信息,与docker-compose中的信息一致

查看pgagent的运行状态

此时表示pgagent已经正常运行。

3、在pg里运行sql建表

在pg的安装目录下有创建job表的相关sql

用dbeaver连接上postgresql,将sql中的第一行的BEGIN TRANSACTION;和最后一行的COMMIT TRANSACTION注释掉并运行sql

sql执行成功后会生成名字为pgagent的schema,其中包含pgagent的的数据字典表

pga_exception : 记录作业执行异常信息

pga_job: 作业定义的基本信息,作业起止时间,最后运行时间等

pga_jobagent:pgAgent的配置信息,服务器上pgAgent的地址和启动时间

pga_jobclass: pgAgent的配置信息,定义作业类型

pga_joblog:每个作业的运行日志,包含启动时间、执行时长。

pga_jobstep:每个job步骤的定义在这个表里。

pga_jobsteplog:每个job步骤的执行日志,包含步骤的开始时间,执行时长。

pga_schedule:job调度的定义在这个表里。

4,执行计划创建

使用pgadmin工具连接目标库

pgadmin已经通过docker-compose安装完成,通过浏览器访问其端口即可进入配置页面

其中用户名密码为docker-compose中配置的内容

4.1 创建name为job1的job

为job1添加Schedule,命名为schedule1,勾选Enabled,然后设置开始和结束时间。如果结束时间不填,就表示这个Job会无止境地运行下去。然后在Times这个Tab的Minutes部分,勾选 00 和 30 ,这里表示这个job1会在每个小时的整点(00),和半点(30)执行。也就是每隔30分钟执行一次。如果只勾选 30, 就表示每个小时的30分钟执行,例如 4:30,5:30,这就是每隔一个小时执行一次了。其它的Hours,Week Days,Month Days,Months的概念是相同的。

另外Exceptions Tab是例外的情况,就是当这种情况的时候就不会执行这个Job。

然后就是为job1添加执行的内容。现在添加一个Step,命名为step1。勾选Enabled。然后选择需要执行这个job的数据库。另外还需要注意Kind部分和On Error部分。Kind部分是指明执行这个job是SQL还是batch类型。job除了可以运行SQL,还可以运行windows的batch命令。在这个例子中我们选用SQL。在On Error部分,表示当执行这个job出现错误的时候,是停止(Fail),是正常(Succeed),还是忽略(Ignore)。现在这个例子选用Fail,就表示当执行的内容一出错,就停止运行,退出。

现在就是定义job1需要执行的SQL,一般建议把这些SQL写在一个事务中,这样就算job1运行失败,都不会影响到数据。

到这一步,job1就基本创建完成了。

现在要监视job1的运行状态,可以通过pgAdmin,在job1的Properties Tab,可以看到job1下次运行的时间,上次运行的时间,结果,当前是否在运行。还可以通过 Statistics Tab,查看job1运行的次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值