$ sudo vi /etc/profile
添加:
export ADBHOME=/home/dpnice/Public/adbsql
export PATH=$ADBHOME/bin:$PATH
export LD_LIBRARY_PATH=$ADBHOME/lib:$LD_LIBRARY_PATH
添加Pgpool-II用户账户:
$ sudo adduser pgpool
$ sudo passwd pgpool
查看PostgreSQL版本
select version();
show server_version;
SHOW server_version_num;
解压pgpool-II-4.0.1.tar.gz
$ tar -zxvf pgpool-II-4.0.1.tar.gz
在已提取源tar.gz包的目录中,执行以下命令。
$ ./configure
$ make
$ make install
Pgpool-II默认 安装在/usr/local目录下。
启动脚本在/usr/local/bin下
配置文件在/usr/local/etc下
启动:$ /usr/local/bin/pgpool
停止:$ /usr/local/bin/pgpool stop 或者 $ /usr/local/bin/pgpool -m fast stop
该配置脚本搜索的libpq在/usr/local/pgsql , 如果已将PostgreSQL安装在其他目录, 则在执行configure时使用 --with-pgsql或–with-pgsql-includedir 和–with-pgsql-libdir命令行选项,并且AntDb必须配置环境变量
make 报错:
make[2]: flex: Command not found
make[2]: *** [scan.c] Error 127
执行:
$ sudo yum -y install gcc automake autoconf libtool make
$ sudo yum install gcc gcc-c++
$ sudo yum -y install flex
安装percona:
sudo rpm -ivh http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
安装Pgpool-II过程中需要的rpm包:
$ sudo rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/libmemcached-1.0.16-5.el7.x86_64.rpm
$ sudo rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/postgresql-libs-9.2.23-3.el7_4.x86_64.rpm
Pgpool-II官方RPM:
$ sudo rpm -ivh http://www.pgpool.net/yum/rpms/4.0/redhat/rhel-7-x86_64/pgpool-II-release-4.0-1.noarch.rpm
$ sudo yum -y install pgpool-II-pg96
选择安装:
$ sudo yum install pgpool-II-pg96-debuginfo
安装开发使用的可选包:
$ sudo yum install pgpool-II-pg96-devel
安装扩展:
$ sudo yum install pgpool-II-pg96-extensions
更改默认位置的权限:
$ sudo chown -R dpnice:dpnice /etc/pgpool-II/
$ sudo mkidr -p /var/run/pgpool/
$ sudo chown -R dpnice:dpnice /var/run/pgpool/
创建log_dir:
$ sudo mkdir -p /var/log/pgpool
$ sudo chown -R dpnice:dpnice /var/log/pgpool
创建socket_dir:
$ sudo mkdir -p /var/run/postgresql/
$ sudo chown -R dpnice:dpnice /var/run/postgresql/
设置 pcp.conf
Pgpool-II为管理员提供了一个执行管理操作的界面,例如获取Pgpool-II状态或远程终止Pgpool-II进程。pcp.conf是用于此接口进行身份验证的 用户/密码文件。
$ vi /etc/pgpool-II/pcp.conf
添加内容
USERID:MD5PASSWD
md5 密码 可以用 pg_md5 MD5PASSWD 生成
不想将密码作为参数传递,请执行
$ pg_md5 -p
$ /usr/bin/pg_md5 passwd
将用户名和md5加密密码写到pool_passwd中
$ /usr/bin/pg_md5 --md5auth --username=username passwd
注意: 用户名和密码必须与PostgreSQL服务器中注册的用户名和密码相同。
设置pgpool.conf:
pgpool有多种复制模式:
如果想使用流复制模式可以将示例配置文件复制
cp /etc/pgpool-II/pgpool.conf.sample-stream /etc/pgpool-II/pgpool.conf
$ vi /etc/pgpool-II/pgpool.conf
修改连接pgsql的配置:
backend_hostname0 = '192.168.137.129'
backend_port0 = 7001
#配置权重默认为1
backend_weight0 = 1
backend_data_directory0 = '/home/dpnice/Public/data'
修改启动认证:
enable_pool_hba = on
如有多台pgsql就配置多台backend
这里backend_hostname0 为AntDB的coordinator地址
配置健康检查:
#指定放弃连接到PostgreSQL的超时(以秒为单位)
health_check_period = 180
#指定健康检查的用户
health_check_user = 'dpnice'
#如果使用明文密码需要加上前缀 TEXT
health_check_password = 'TEXTdpnice'
health_check_database = 'postgres'
health_check_max_retries = 3
health_check_retry_delay = 3
#Pgpool-II将在数据库节点之间分发SELECT查询
load_balance_mode = true
#负载均衡模式和主/从模式一起使用时,在备用后端节点上分配读取负载
master_slave_mode = on
#启动主从复制模式,需设置
master_slave_sub_mode = 'stream'
注意: replication_mode 和master_slave_mode是互斥的,一次只能启用一个。
要启用数据库复制功能,请在pgpool.conf文件中将replication_mode配置 为true,
可选配置 :replication_stop_on_mismatch 防止后端节点之间的数据不一致(返回失败时导致的不一致)
failover_if_affected_tuples_mismatch 防止后端节点之间的数据不一致(使用INSERT /UPDATE/DELETE受影响数据不一致时)
replicate_select 设置为on时,SELECT查询被发送到所有PGSQL节点。
master_slave_mode = on 启动主从复制模式,需设置master_slave_sub_mode = ‘stream’ 可选参数 stream, slony or logical. Default is stream.
添加认证:
& vi /etc/pgpool-II/pool_hba.conf
添加以下内容:
host all all 192.168.137.1/32 md5
启动:
$ systemctl start pgpool.service
关闭:
$ systemctl stop pgpool.service
验证:
$ systemctl status pgpool.service
连接:
$ psql -U dpnice postgres -h 192.168.137.128 -p 9999
postgres=# show pool_nodes;
node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay | last_status_change
---------+-----------------+------+--------+-----------+---------+------------+-------------------+-------------------+---------------------
0 | 192.168.137.129 | 7001 | up | 0.500000 | standby | 51 | true | 0 | 2018-11-20 18:49:50
1 | 192.168.137.130 | 7001 | up | 0.500000 | standby | 4 | false | 0 | 2018-11-20 18:49:50
测试:$ vim pool.sh
#!/bin/bash
pgpool="psql -U dpnice -d bench_replication -p 9999 -h 192.168.137.128"
for i in {1..20}
do
$pgpool -c "SELECT count(1) FROM dbms_random.test_table;"
done
AntDB创建用户:
CREATE USER pgpool PASSWORD ‘pgpool’;
GRANT dpnice TO pgpool; 把dpnice的权限继承给pgpool
SELECT * FROM pg_roles;
PGPool-II+PG流复制实现HA主备切换:
https://www.jianshu.com/p/ef183d0a9213
http://www.pgpool.net/docs/latest/en/html/index.html