postgresql使用pgagent来实现job功能

postgresql本身没有job的功能,可以使用第三方pgagent来实现,postgresql本身的官方文档中找不到pgagent的相关信息,安装配置好pgagent后,使用pgAdmin图形界面工具来操作job比较方便

pgagent的源码https://www.pgadmin.org/download/pgagent-source-code/
pgagent的文档https://www.pgadmin.org/docs/pgadmin4/latest/pgagent.html

pgagent安装方法
yum list |grep pgagent
yum -y install pgagent_11.x86_64
–如果postgresql数据库版本是11,则可以选择安装pgagent_11.x86_64版本
su - postgres
psql
postgres=# create extension pgagent ;
–此时在postgres数据库创建了pgagent的schema,在paadmin图形界面工具中就是postgres/Catalogs/pgAgent job scheduler
postgres=# \c DB1
DB1=# CREATE EXTENSION pgagent;
–此时在DB1数据库创建了pgagent的schema,在paadmin图形界面工具中就是DB1/Catalogs/pgAgent job scheduler

pgagent启动方法,如下的postgres用户是OS用户,在root用户下执行需要输入postgres的密码
[[email protected] log]#/usr/bin/pgagent_11 host=localhost port=5432 dbname=postgres user=root password=123456

如果不想输入密码,修改pg_hba.conf文件增加,并使用postgres用户执行/usr/bin/pgagent_11
[[email protected] log]# vi pg_hba.conf
host all all 127.0.0.1/32 trust
备注:因为/usr/bin/pgagent_11不是psql,所以不能使用pg_hba.conf中的"local" is for Unix domain socket connections only,只能使用IPv4 local connections
[[email protected] log]# su - postgres
Last login: Tue Nov 10 00:01:01 PST 2020
-bash-4.2$ /usr/bin/pgagent_11 host=localhost port=5432 dbname=postgres user=postgres &

设置pgagent开机启动
[[email protected] log]# chmod 777 /etc/rc.d/rc.local
[[email protected] log]# cat /etc/rc.d/rc.local
su - postgres -c “/usr/bin/pgagent_11 host=localhost port=5432 dbname=postgres user=postgres &”

pgagent只要安装成功后,不管pgagent有没有运行,pgagent的相关表和schema都存在,也可以创建job,但是创建的job无法运行,pgagent必须运行后job才可以正常运行

pgagent的相关表都位于DB/Catalogs/pgAgent job scheduler下
pgagent.pga_exception : 记录作业执行异常信息
pgagent.pga_job: 作业定义的基本信息,作业起止时间,最后运行时间等
pgagent.pga_jobagent:pgAgent的配置信息,服务器上pgAgent的地址和启动时间
pgagent.pga_jobclass: pgAgent的配置信息,定义作业类型
pgagent.pga_joblog:每个作业的运行日志,包含启动时间、执行时长。
pgagent.pga_jobstep:每个job步骤的定义在这个表里。
pgagent.pga_jobsteplog:每个job步骤的执行日志,包含步骤的开始时间,执行时长。
pgagent.pga_schedule:job调度的定义在这个表里。

备注:
创建job,使用pgAdmin图形界面工具一步步操作即可,如果需要每小时、每分钟都运行,则需要勾选每一个小时和每一分钟

!postgresql使用pgagent来实现job功能
在这里插入图片描述