od:centos 6.8
db:postgresql 9.6
pgagent 是 pgsql 的一个job调度的功能扩展存在,个人对pgagent有点困惑,感觉这个东西应该作为数据库系统必备一部分,而不应该让开发人员或者dba再去安装个 pgagent。
pgAgent 依赖 cmake 和 wxGTK,所以要先配置好 cmake 和wxGTK
centos 6.8 安装是自带了 cmake
ls -l /usr/bin/cmake
-rwxr-xr-x 1 root root 4168936 Oct 15 2014 /usr/bin/cmake
cmake --version
cmake version 2.8.12.2
Latest Stable Release: 3.0.3
Previous Stable Release: 2.8.12
本次采用 2.8.12
root用户下
vi ~/.bash_profile
export PATH=/usr/local/wxGTK-2.8.12/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/wxGTK-2.8.12/lib:$LD_LIBRARY_PATH
source .bash_profile
编译、安装
root用户下
./configure --enable-shared=no --enable-unicode=yes --prefix=/usr/local/wxGTK-2.8.12
make
make install
下载 pgAgent v3.4.0
pgagent安装
这里需要先指定postgresql环境变量
root用户下
export PGDATA=/var/lib/pgsql/9.6/data
export PGHOME=/usr/pgsql-9.6
export PATH=$PGHOME/bin:$PATH
export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:$PGHOME/lib:$LD_LIBRARY_PATH
cmake ./
-- ================================================================================
-- Configuration summary:
--
-- Project : pgagent
-- Description : pgAgent is a job scheduling engine for PostgreSQL
-- Version : 3.4.0
--
-- PostgreSQL version string : PostgreSQL 9.6.4
-- PostgreSQL version parts : 9.6.4
-- PostgreSQL path : /usr/pgsql-9.6
-- PostgreSQL config binary : /usr/pgsql-9.6/bin/pg_config
-- PostgreSQL include path : /usr/pgsql-9.6/include
-- PostgreSQL library path : /usr/pgsql-9.6/lib
-- PostgreSQL share path : /usr/pgsql-9.6/share
--
-- wxWidgets version : 2.8.12
-- wxWidgets path : /usr/local/wxGTK-2.8.12
-- wxWidgets config binary : /usr/local/wxGTK-2.8.12/bin/wx-config
-- wxWidgets Static linking : YES
-- wxWidgets Debug? : NO
-- ================================================================================
make
make install
如果没有报错,就可以 到 psql下创建了
create extension pgagent;
postgres=# create extension pgagent ;
CREATE EXTENSION
或者直接 pgagent rpm
yum list |grep pgagent
yum install pgagent_96.x86_64
/usr/share/pgagent_96-3.4.0
/usr/share/pgagent_96-3.4.0/pgagent_upgrade.sql
/usr/share/pgagent_96-3.4.0/pgagent.sql
/usr/pgsql-9.6/share/extension/pgagent–3.4.sql
/usr/pgsql-9.6/share/extension/pgagent.control
/usr/pgsql-9.6/share/extension/pgagent–unpackaged–3.4.sql
查看 pgagent_96
cat /etc/init.d/pgagent_96
关键是这一行
$SU pgagent -c "/usr/bin/pgagent_96 -s $LOGFILE hostaddr=$DBHOST dbname=$DBNAME user=$DBUSER port=$DBPORT"
需要使用~/.pgpass来保存密码,在pgagent用户的主目录下新建.pgpass文件
#hostname:port:database:username:password
`*:*:*:postgres:xxxxx`
$ chmod 0600 .pgpass
# service pgagent_96 status
# service pgagent_96 start
碰到如下错误
WARNING: Couldn’t create the primary connection (attempt 3): FATAL: Ident authentication failed for user “postgres”
开启 pgslq 的 log_connections = ‘on’ ,发现使用的是 ipv6 登录的。关闭操作系统的 ipv6
lsmod | grep ipv6
在/etc/modprobe.d/dist.conf结尾添加
alias net-pf-10 off
alias ipv6 off
vi /etc/sysconfig/network
NETWORKING_IPV6=no
vi /etc/hosts
#::1
17:16:24: Error: Cannot get the official hostname (error 0: Success)
这个问题是在/etc/hosts 没有添加主机名
vi /etc/hosts
x.x.x.x DB_monitor
chkconfig --level 3 pgagent_96 on
chkconfig --level 5 pgagent_96 on
create extension pgagent
;
会在数据库下新建了一个 pgagent 的 schema
使用 pgAdmin 4 来创建
参考:https://www.pgadmin.org/download/pgagent-source-code/
https://www.pgadmin.org/docs/pgadmin3/1.22/pgagent-install.html
http://cmake.org/download/
http://www.wxwidgets.org/downloads/