AntDB和pgpool联合部署

版权声明:转载请链接 https://blog.csdn.net/DPnice/article/details/84302398

AntDB+pgpool-II 结构图:
AntDB+pgpool-II 结构图

配置环境变量

$ 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    

编译并安装Pgpool-II

查看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

使用rpm包安装pgpool:

安装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

猜你喜欢

转载自blog.csdn.net/DPnice/article/details/84302398
今日推荐