wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgpool-II-10-4.0.3-1.rhel7.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgpool-II-10-devel-4.0.3-1.rhel7.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgpool-II-10-extensions-4.0.3-1.rhel7.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgpool-ha-3.0-1.rhel7.1.x86_64.rpm
wget https://yum.postgresql.org/10/redhat/rhel-7-x86_64/pgpoolAdmin-4.0.1-1.rhel7.noarch.rpm
rpm安装参考 http://www.pgpool.net/docs/latest/en/html/install-rpm.html
使用 root 权限的账户安装,否则 VIP 无法自动切换。如果不是root安装的,则需要配置 ssh 等一系列权限配置
rpm的 yum源 http://www.pgpool.net/yum.
依赖 libmemcached 故需先安装 libmemcached

[root@vlnx107001 pgpool-ii]# yum install libmemcached -y
[root@vlnx107001 pgpool-ii]# rpm -ivh pgpool-II-10-4.0.3-1.rhel7.x86_64.rpm pgpool-II-10-devel-4.0.3-1.rhel7.x86_64.rpm pgpool-II-10-extensions-4.0.3-1.rhel7.x86_64.rpm

安装 pgpool-ha。同样有依赖,故需要先安装依赖

[root@vlnx107001 pgpool-ii]# yum install resource-agents -y
[root@vlnx107001 pgpool-ii]# rpm -ivh pgpool-ha-3.0-1.rhel7.1.x86_64.rpm
安装后文件所在路径


所有的配置文件都位于:
/etc/pgpool-II-10/

开启防火墙
源码安装
wget http://www.pgpool.net/download.php?f=pgpool-II-4.0.4.tar.gz
[root@vlnx107002 pgpool-II-4.0.4]# yum install gcc-c++ -y
[root@vlnx107002 pgpool-II-4.0.4]# ./configure #为了和第一台vlnx107001机器安装路径一样,这里就不指定安装路径(默认/usr/local)
[root@vlnx107002 pgpool-II-4.0.4]# make
[root@vlnx107002 pgpool-II-4.0.4]# make install
[root@vlnx107002 pgpool-II-4.0.4]# make install
Making install in src
make[1]: Entering directory `/root/pgpool-II-4.0.4/src'
Making install in parser
make[2]: Entering directory `/root/pgpool-II-4.0.4/src/parser'
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/parser'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/parser'
make[2]: Leaving directory `/root/pgpool-II-4.0.4/src/parser'
Making install in libs
make[2]: Entering directory `/root/pgpool-II-4.0.4/src/libs'
Making install in pcp
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/libs/pcp'
make[4]: Entering directory `/root/pgpool-II-4.0.4/src/libs/pcp'
/bin/mkdir -p '/usr/local/lib'
/bin/sh ../../../libtool --mode=install /bin/install -c libpcp.la '/usr/local/lib'
libtool: install: /bin/install -c .libs/libpcp.so.1.0.0 /usr/local/lib/libpcp.so.1.0.0
libtool: install: (cd /usr/local/lib && { ln -s -f libpcp.so.1.0.0 libpcp.so.1 || { rm -f libpcp.so.1 && ln -s libpcp.so.1.0.0 libpcp.so.1; }; })
libtool: install: (cd /usr/local/lib && { ln -s -f libpcp.so.1.0.0 libpcp.so || { rm -f libpcp.so && ln -s libpcp.so.1.0.0 libpcp.so; }; })
libtool: install: /bin/install -c .libs/libpcp.lai /usr/local/lib/libpcp.la
libtool: install: /bin/install -c .libs/libpcp.a /usr/local/lib/libpcp.a
libtool: install: chmod 644 /usr/local/lib/libpcp.a
libtool: install: ranlib /usr/local/lib/libpcp.a
libtool: finish: PATH="/root/perl5/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin:/usr/local/mongo/bin:/opt/puppetlabs/bin:/root/bin:/usr/pgsql-10/bin:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
/bin/mkdir -p '/usr/local/include'
/bin/install -c -m 644 ../../../src/include/pcp/pcp.h ../../../src/include/pcp/libpcp_ext.h ../../../src/include/pool_type.h ../../../src/include/utils/pool_process_reporting.h '/usr/local/include'
make[4]: Leaving directory `/root/pgpool-II-4.0.4/src/libs/pcp'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/libs/pcp'
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/libs'
make[4]: Entering directory `/root/pgpool-II-4.0.4/src/libs'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/root/pgpool-II-4.0.4/src/libs'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/libs'
make[2]: Leaving directory `/root/pgpool-II-4.0.4/src/libs'
Making install in watchdog
make[2]: Entering directory `/root/pgpool-II-4.0.4/src/watchdog'
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/watchdog'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/watchdog'
make[2]: Leaving directory `/root/pgpool-II-4.0.4/src/watchdog'
Making install in .
make[2]: Entering directory `/root/pgpool-II-4.0.4/src'
make[3]: Entering directory `/root/pgpool-II-4.0.4/src'
/bin/mkdir -p '/usr/local/bin'
/bin/sh ../libtool --mode=install /bin/install -c pgpool '/usr/local/bin'
libtool: install: /bin/install -c pgpool /usr/local/bin/pgpool
/bin/mkdir -p '/usr/local/etc'
/bin/install -c -m 644 sample/pgpool.conf.sample sample/pcp.conf.sample sample/pool_hba.conf.sample sample/pgpool.conf.sample-replication sample/pgpool.conf.sample-master-slave sample/pgpool.conf.sample-stream sample/pgpool.conf.sample-logical '/usr/local/etc'
/bin/mkdir -p '/usr/local/share/pgpool-II'
/bin/install -c -m 644 sql/insert_lock.sql sample/pgpool.pam '/usr/local/share/pgpool-II'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src'
make[2]: Leaving directory `/root/pgpool-II-4.0.4/src'
Making install in tools
make[2]: Entering directory `/root/pgpool-II-4.0.4/src/tools'
Making install in pcp
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pcp'
make[4]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pcp'
/bin/mkdir -p '/usr/local/bin'
/bin/sh ../../../libtool --mode=install /bin/install -c pcp_stop_pgpool pcp_node_count pcp_node_info pcp_proc_count pcp_proc_info pcp_detach_node pcp_attach_node pcp_recovery_node pcp_promote_node pcp_pool_status pcp_watchdog_info '/usr/local/bin'
libtool: install: /bin/install -c .libs/pcp_stop_pgpool /usr/local/bin/pcp_stop_pgpool
libtool: install: /bin/install -c .libs/pcp_node_count /usr/local/bin/pcp_node_count
libtool: install: /bin/install -c .libs/pcp_node_info /usr/local/bin/pcp_node_info
libtool: install: /bin/install -c .libs/pcp_proc_count /usr/local/bin/pcp_proc_count
libtool: install: /bin/install -c .libs/pcp_proc_info /usr/local/bin/pcp_proc_info
libtool: install: /bin/install -c .libs/pcp_detach_node /usr/local/bin/pcp_detach_node
libtool: install: /bin/install -c .libs/pcp_attach_node /usr/local/bin/pcp_attach_node
libtool: install: /bin/install -c .libs/pcp_recovery_node /usr/local/bin/pcp_recovery_node
libtool: install: /bin/install -c .libs/pcp_promote_node /usr/local/bin/pcp_promote_node
libtool: install: /bin/install -c .libs/pcp_pool_status /usr/local/bin/pcp_pool_status
libtool: install: /bin/install -c .libs/pcp_watchdog_info /usr/local/bin/pcp_watchdog_info
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pcp'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pcp'
Making install in pgmd5
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pgmd5'
make[4]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pgmd5'
/bin/mkdir -p '/usr/local/bin'
/bin/sh ../../../libtool --mode=install /bin/install -c pg_md5 '/usr/local/bin'
libtool: install: /bin/install -c pg_md5 /usr/local/bin/pg_md5
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pgmd5'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pgmd5'
Making install in pgenc
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pgenc'
make[4]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pgenc'
/bin/mkdir -p '/usr/local/bin'
/bin/sh ../../../libtool --mode=install /bin/install -c pg_enc '/usr/local/bin'
libtool: install: /bin/install -c pg_enc /usr/local/bin/pg_enc
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pgenc'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pgenc'
Making install in pgproto
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pgproto'
make[4]: Entering directory `/root/pgpool-II-4.0.4/src/tools/pgproto'
/bin/mkdir -p '/usr/local/bin'
/bin/sh ../../../libtool --mode=install /bin/install -c pgproto '/usr/local/bin'
libtool: install: /bin/install -c pgproto /usr/local/bin/pgproto
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pgproto'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/tools/pgproto'
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/tools'
make[4]: Entering directory `/root/pgpool-II-4.0.4/src/tools'
/bin/mkdir -p '/usr/local/bin'
/bin/install -c pgpool_setup watchdog_setup '/usr/local/bin'
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/root/pgpool-II-4.0.4/src/tools'
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/tools'
make[2]: Leaving directory `/root/pgpool-II-4.0.4/src/tools'
Making install in include
make[2]: Entering directory `/root/pgpool-II-4.0.4/src/include'
make[3]: Entering directory `/root/pgpool-II-4.0.4/src/include'
make[3]: Nothing to be done for `install-exec-am'.
make[3]: Nothing to be done for `install-data-am'.
make[3]: Leaving directory `/root/pgpool-II-4.0.4/src/include'
make[2]: Leaving directory `/root/pgpool-II-4.0.4/src/include'
make[1]: Leaving directory `/root/pgpool-II-4.0.4/src'
make[1]: Entering directory `/root/pgpool-II-4.0.4'
make[2]: Entering directory `/root/pgpool-II-4.0.4'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/root/pgpool-II-4.0.4'
make[1]: Leaving directory `/root/pgpool-II-4.0.4'
如果在 ./configure时 没有指定目录,则默认安装目录是 /etc/local
安装成功后会有
bin etc include lib share 5个目录(见 make install 详细输出log)
安装后bin文件落在 /etc/local/bin

配置文件模板 在 /etc/local/etc 目录下

安装 pgpool_recovery (C语言函数)
如果一个节点损坏,要在线把失败的节点再加回集群,这时就需要在所有后端数据库节点的 template1 库中安装一些pgpool-II提供的C语言函数
[root@vlnx107002 pgpool-recovery]# make && make install

-bash-4.2$ psql template1
template1=# create extension pgpool_reconvery;


修改 postgresql.conf配置文件,加入:
pgpool.pg_ctl = '/usr/pgsql-10/bin/pg_ctl';
安装 pgpool_regclass
如果是pg9.4或更高以后的版本则无需注册 pgpool-regclass,反之如果是9.4以下的版本则需注册 pgpool-regclass。
该函数被 pgpool-II内部使用,否则,在不同的schema中处理相同的名称和非临时表会出现问题。
[root@vlnx107002 pgpool-regclass]# make && make install

template1=# CREATE EXTENSION pgpool_regclass;

建立insert_lock表
如果不打算使用本机复制模式,则无需安装。否则需安装
如果计划使用本机复制模式和insert_lock, 强烈建议创建用于互斥的pgpool_catalog.insert_lock表。没有这个,insert_lock到目前为止工作。但是在这种情况下,Pgpool-II会锁定插入目标表。此行为与VACUUM的表锁相同,因此INSERT 处理可能因此保持等待很长时间。
-bash-4.2$ psql -f /root/pgpool-II-4.0.4/src/sql/insert_lock.sql template1
安装 pgpool_adm


570

被折叠的 条评论
为什么被折叠?



