欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

pgAgent定时器完整适合小白

程序员文章站 2022-03-11 09:22:47
文章目录前言一、PgAgent是什么?二、安装步骤总结前言现在目前有很多数据库都自带了定时器(比如oracle,开源界的postgres,等等一些),那么具体的目的是为了跟服务器独立隔离(服务器也有定时任务可以直接用,如果万一有那天我数据库搬家了呢搬到其他的服务器上了呢注意操作系统不同)所有为了后续的迁移维护做准备!把定时器全部由postgres管理。一、PgAgent是什么?跟quarzt差不多的一个定时器架构,区别PgAgent是个插件针对于postgres数据库,quarzt是套框架针对于项...


前言

现在目前有很多数据库都自带了定时器(比如oracle,开源界的postgres,等等一些),那么具体的目的是为了跟服务器独立隔离(服务器也有定时任务可以直接用,如果万一有那天我数据库搬家了呢搬到其他的服务器上了呢注意操作系统不同)所有为了后续的迁移维护做准备!把定时器全部由postgres管理。

一、PgAgent是什么?

跟quarzt差不多的一个定时器架构,区别PgAgent是个插件针对于postgres数据库,quarzt是套框架针对于项目。

二、安装步骤

1.导入安装源(安装指定要不然找不到安装包)、
适用范围:
CentOS CentOS 7.x(其他的自己去改红帽源EL-7-x86_64改成别的)
PostgreSQL 9.x-12.x

具体源可以去官网找,我这边导过了就不在导了
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

2.先装个pgadmin把为了比较好操作一点(可视化界面),不想要这东西也可以直接安装pgAgent(所在数据库中的模式安装了此插件会有一个pgagent模式自己去里面操作sql好了)
这里为了更加简单客观更好理解用可视化咯
注意:pgadmin采用python开发

安装python环境:3.6.0-内部使用3.4.0向下兼容版本开发
检查是否有 GCC:依赖
gcc --version # 查看gcc版本
# 若没有输出,执行安装命令
yum  -y install gcc

pgAgent定时器完整适合小白

安装依赖:
如果不安装依赖,在安装 Python 的时候会报错
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

pgAgent定时器完整适合小白

yum -y groupinstall "Development tools"

pgAgent定时器完整适合小白

yum install -y libffi-devel zlib1g-dev

pgAgent定时器完整适合小白

yum install zlib* -y

pgAgent定时器完整适合小白

重点:安装最新版3.9.1(由于GCC编译器版本太低不支持,升级版本时间太久40多分钟安装,所以还是降低版本为3.6.0)

yum在线安装:

设置源:
yum install epel-release
yum install https://repo.ius.io/ius-release-el7.rpm
也可以使用离线安装(自己去下载压缩包安装)
创建软连接:
ln -s /bin/python3.6 /bin/python3
在线安装pip:
yum install python36u-pip
创建软连接:
ln -s /bin/pip3.6 /bin/pip3

python3.6.0安装完成


安装pgadmin4
下载pgadmin(目前最新版4.28)
直接下载pip就行(到时候直接用pip包管理工具安装)
wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v4.28/pip/pgadmin4-4.28-py3-none-any.whl

pgAgent定时器完整适合小白

使用包管理工具安装pgadmin4
没有安装一下:yum install python3-pip

创建 pgAdmin4 的项目目录
mkdir -p /opt/pgadmin
创建 pgAdmin4 的数据目录
mkdir -p /var/lib/pgadmin
创建 pgAdmin4 的日志目录
mkdir -p /var/log/pgadmin
创建虚拟环境
cd /opt/pgadmin
python3.6m -m venv venv
激活虚拟环境
source venv/bin/activate
安装 pgAdmin4 使用清华大学的 pip 镜像
pip install pgadmin4-4.28-py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple

pgAgent定时器完整适合小白

改下配置文件config.py参数DEFAULT_SERVER = '0.0.0.0'
要不然项目内部会拦截这个ip

pgAgent定时器完整适合小白
pgAgent定时器完整适合小白

设置个人信息:python3 /opt/pgadmin/venv/lib/python3.6/site-packages/pgadmin4/setup.py

pgAgent定时器完整适合小白

启动: nohup python3 pgAdmin4.py &
这种启动适合演示(生产下还是不要使用这种开发服务器启动)
可以使用外置的httpd或者uwsgi容器部署(一般的话人少随便弄弄还好吧)
需要部署的可以自己网上找(注意uwsgi可以单跑不一定要跟nginx搭配)

pgAgent定时器完整适合小白pgAgent定时器完整适合小白
到此pgadmin4最新版安装完毕了


开始安装pgAgent定时插件

搜索模块插件
yum search pgagent

pgAgent定时器完整适合小白

12的所以就安装12 基于86架构进阶的64位
yum install pgagent_12.x86_64

pgAgent定时器完整适合小白

创建postgres数据库中的PGAgent模式(就算专门存储当前数据库定时器信息的咯)
psql -U postgres -d postgres -h 10.1.200.116 -p 5432 -f /usr/share/pgagent_12-4.0.0/pgagent.sql -W

pgAgent定时器完整适合小白

后台启动定时器(就算执行任务的进程咯)
/usr/bin/pgagent_12 -s /usr/pgsql-12/log/pgagent12.log hostaddr=10.1.200.116 port=5432 dbname=postgres user=postgres password=123456

pgAgent定时器完整适合小白
到此为此pgAgent安装完毕咯
pgAgent定时器完整适合小白


开始配置定时任务
注意:pgAgent 计划任务跟步骤是多对多关系

创建pgAgent任务
参考:点击下面?即可

pgAgent定时器完整适合小白

常规:
	名称:demo1
	是否启动:yes
	作业类型:日常维护(随便乱选一个就好这就是一个分类)
	主机代理:指定那台主机可以运行我这个任务(就是给你的pgagent实例一个判断条件),不选所有主机都可以运行这个任务
	注解:随便乱填

pgAgent定时器完整适合小白

步骤:
	常规->
	名称:step1
	启用:yus
	种类:sql(选批处理,对应code那边些批处理路径就行:注意linux权限问题)
	连接类型:本地
	数据库:postgres
	出现错误:fail
	注解:随便乱填

pgAgent定时器完整适合小白

根据自己需求-需不需要
连接字符串:可以远程连接数据库执行任务(只有sql可以远程然后连接类型选中远程)
host=10.1.200.116 port=5432 dbname=postgres user=postgres password=123456  connect_timeout=10

pgAgent定时器完整适合小白

	代码->
	begin;
	insert into public.demo values('1234567890');
	end;
	最好加个事务(失败了不会执行成功)

pgAgent定时器完整适合小白

根据需求场景选择-这里是个例子
常规->
对应批处理配置:

pgAgent定时器完整适合小白

代码->
写对应批处理的路径:/var/lib/test.sh

pgAgent定时器完整适合小白

计划任务
	常规->
	名称:job1
	启用:yes
	起始值:2020-12-02 11:32:51 +08:00
	结束:不填无限执行
	注释:随便乱填

pgAgent定时器完整适合小白

重复->
小时跟分钟全选了(每分钟执行一次)
这边就是正常的可视化cron表达式
用过的都会了不会的点击?

pgAgent定时器完整适合小白

异常->
	这里是设置某个时间点不会执行任务(就是这个时间点有异常不执行任务)
	2020-12-02 12:50分钟不执行这个任务
	我这边没设置有需求的可以试一下(这边只是演示)

pgAgent定时器完整适合小白

执行成功
可以执行crud-Sql吧

pgAgent定时器完整适合小白

注意事项(重点):

后期维护调试面板
1.运行信息维护

pgAgent定时器完整适合小白

2.任务日志查看

pgAgent定时器完整适合小白

在补充一点吧,之前我说没必要安装这个pgadmin也可以使用(其实吧只需要摸清楚pgadmin里面的
定时器生成规则自己也可以手动直接在pgagent模式下直接操作sql使用)

pgAgent定时器完整适合小白
pgAgent定时器完整适合小白
超级重点:

经过我的测试发现好像pgagent实例运行sql时不支持中文|
只要代码区域写了sql中有中文的就日志状态就是正在运行中|
注意一般正在运行中就是你sql执行出错了|
如果是任务连接信息不对反正就是定时器这个*出错了直接执行失败内部出错就是正在运行中|

pgAgent定时器完整适合小白
pgAgent定时器完整适合小白

可以看到然并软,并没有删除掉

pgAgent定时器完整适合小白

补充:
	作业状态
	r=运行中
	s=成功完成
	f=失败
	i=没有要执行的步骤
	d=中止

总结

一般来说这里不能执行中文可能是pgagent实例那边的问题
其实还好一般正常的使用都是写个postgresql函数(也称存储过程)然后直接
调用存储过程就好了。教程完毕咯

本文地址:https://blog.csdn.net/weixin_43783011/article/details/110423729