pgpool配合流复制的主备模式1主2从
1 环境
1)主机名:pgpoola ip:10.10.20.10 角色:pgpool主机
2)主机名:pgaa1 ip:10.10.20.1 角色:pg库主结点
3)主机名:pgaa2 ip:10.10.20.2 角色:pg库从1结点
4)主机名:pgaa3 ip:10.10.20.3 角色:pg库从2结点
pgaa1/2/3是使用pg的hot_standy建的1主2从的流复制集群,集群已经建立
2 目标
使用pgpool实现pg集群的负载均衡和读写分离,因为pg的服务器是虚拟机,不用pgpool的failover功能。
这种模式下不需要配置pgaa1/2/3之间的ssh互信任
3 pgpool软件安装
1)下载链接 http://www.pgpool.net/download.php?f=pgpool-II-3.6.8.tar.gz
2)依赖包
yum install gcc-c++ gcc flex readline-devel zlib-devel zlib openssl openssl-devel
3)提示
从可见的文档,pgpoola这个结点需安装pgpool,pgaa/1/2/3这几个结点只需要安装C函数就可以。安装很简单,所以这4台机器pgpool的环境我都安装了。
4)安装
a、pgpoola,pgaa/1/2/3
使用root用户,pgpoola机器需建postgres用户
./configure \ --prefix=/usr/local/pgpool-II-3.6.8/ \ --with-pgsql=/usr/local/pgsql \ --with-openssl make make install
后续工作
ln -sf /usr/local/pgpool-II-3.6.8 /usr/local/pgpool chown -R postgres:postgres /usr/local/pgpool-II-3.6.8
b、pgaa1/2/3结点
使用postgres用户,可以把安装源的目标的属主改成postgres
chown -R postgres:postgres /tmp/yang/pgpool-II-3.6.8
安装pgpool_regclass
cd /tmp/yang/pgpool-II-3.6.8/src/sql/pgpool-regclass make make install
安装C语言函数
cd /tmp/yang/pgpool-II-3.6.8/src/sql/pgpool-recovery make make install
c、pgaa1结点
建立regclass和recovery的extension
psql template1 template1=# create extension pgpool_recovery; template1=# create extension pgpool_regclass; cd /tmp/yang/pgpool-II-3.6.8/src/sql psql -f /tmp/yang/pgpool-II-3.6.8/src/sql/insert_lock.sql template1
如果应用数据库已经建立,上面的建extension的语句每个应用库都要执行一下。
4 pgpool配置
pgpoola结点
1)环境变量
[postgres@pgpoola ~]$ cat .bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin #yangbaoqiu add export PATH=/usr/local/pgpool/bin:/usr/local/pgsql/bin:$PATH export LD_LIBRARY_PATH=/usr/local/pgpool/lib:/usr/local/pgsql/lib:$LD_LIBRARY_PATH
2)pcp.conf文件
用于pcp_开头一系列工具口令验证,用pg_md5命令生成
cd /usr/local/pgpool/etc [postgres@pgpoola etc]$ cat pcp.conf # USERID:MD5PASSWD postgres:5b2b49e58f0700c8576236d6c396fc2a
3)pool_passwd文件
这个文件用途是psql通过pgpool连接pg库时做用户口令认证的,使用的数据库用户都需在这个文件中生成条目。
这个文件是通过pg_md5生成的,如果文件已经存在则pg_md5往里添加条目
pg_md5 --md5auth -u postgres -p #注意这里的--md5auth [postgres@pgpoola etc]$ cat pool_passwd postgres:md5ed7ab34bb25f4704f58f0f9288e0a781 qiuyb:md54a2ccb6232c195b2060e6b1471190a06
4)pgpool.conf文件
注意如下这些参数:
listen_addresses = '*' port = 9999 socket_dir = '/tmp' pcp_listen_addresses = '*' pcp_port = 9898 pcp_socket_dir = '/tmp' backend_hostname0 = '10.10.20.1' backend_port0 = 5432 backend_weight0 = 1 backend_data_directory0 = '/pgdata/pgaa' backend_flag0 = 'DISALLOW_TO_FAILOVER' backend_hostname1 = '10.10.20.2' backend_port1 = 5432 backend_weight1 = 1 backend_data_directory1 = '/pgdata/pgaa' backend_flag1 = 'DISALLOW_TO_FAILOVER' backend_hostname2 = '10.10.20.3' backend_port2 = 5432 backend_weight2 = 1 backend_data_directory2 = '/pgdata/pgaa' backend_flag2 = 'DISALLOW_TO_FAILOVER' enable_pool_hba = on pool_passwd = 'pool_passwd' ssl = off num_init_children = 128 max_pool = 4 pid_file_name = '/usr/local/pgpool/run/pgpool.pid' logdir = '/tmp' replication_mode = off replicate_select = off load_balance_mode = on master_slave_mode = on master_slave_sub_mode = 'stream' sr_check_period = 10 sr_check_user = 'zabbix' sr_check_password = 'Gghhx_888' sr_check_database = 'postgres'
5 启动pgpool
只需要在pgpoola这个结点操作,数据库结点不用操作
<>
[postgres@pgpoola ~]$ pgpool
>
这些pgpool在后台以daemon方式运行
如果想看详细的信息:
[postgres@pgpoola ~]$mkdir -p /usr/local/pgpool/log [postgres@pgpoola ~]$/usr/local/pgpool/bin/pgpool -n -d > /usr/local/pgpool/log/pgpool.log 2>&1 &
-n:不以daemon方式运行
-d:debug方式
6 停pgpool
[postgres@pgpoola ~]pgpool stop
7 查看pgpool的运行状态
1)看节点状态
[postgres@pgpoola ~]$ psql -h 10.10.20.10 -p 9999 -U postgres Password for user postgres: psql (9.6.6) Type "help" for help. postgres=# show pool_nodes; node_id | hostname | port | status | lb_weight | role | select_cnt | load_balance_node | replication_delay ---------+------------+------+--------+-----------+---------+------------+-------------------+------------------- 0 | 10.10.20.1 | 5432 | up | 0.333333 | primary | 13138 | true | 0 1 | 10.10.20.2 | 5432 | up | 0.333333 | standby | 2 | false | 0 2 | 10.10.20.3 | 5432 | up | 0.333333 | standby | 2 | false | 0 (3 rows)
2) 查看pgpool进程
ps -ef|grep pgpool
3)其它pgpool命令
postgres=# show pool_status; postgres=# show pool_nodes; postgres=# show pool_processes; postgres=# show pool_pools; postgres=# show pool_version;
近期评论