更新时间:2024-06-12 15:54:28

下载安装Pgpool-II

  1. 按照需要的版本安装Pgpool-II,可采用yum直接安装,也可取压缩包解压安装。这里不做详细叙述,可参考网上教程安装。

    以下采用yum安装方式,将pgpool安装在主节点(master):

    #yum install -y http://www.pgpool.net/yum/rpms/3.6/redhat/rhel-7-x86_64/pgpool-II-release-3.6-1.noarch.rpm

    #yum -y install pgpool-II-pg96 pgpool-II-pg96-debuginfo pgpool-II-pg96-devel pgpool-II-pg96-extensions

    #systemctl enable pgpool.service #开启自动启动

  2. 给相关路径添加数据库用户(如postgres)权限。

    #chown -R postgres.postgres /etc/pgpool-II

    #chown -R postgres.postgres /var/run/pgpool/

配置Pgpool-II

  1. 配置pool_hba.conf

    cp /etc/pgpool-II/pool_hba.conf{,.bak}

    vi /etc/pgpool-II/pool_hba.conf

    增加如下内容:

    host all all 0.0.0.0/0 md5

    image42.png

    配置pool_hba.conf

  2. 配置pcp.conf。数据库中运行如下命令,然后添加至pcp.conf文件中。

    postgres=# select rolname,rolpassword from pg_authid;

    image43.png

    查询密码文件

    image44.png

    配置pcp.conf

  3. 配置pgpool.conf。此配置文件按照自己的需要进行配置,这里只做简单步骤介绍。所填参数只是模拟环境的参数,请按需填写。

    # CONNECTIONS
    listen_addresses = '*'
    port = 54321    #pgpool连接端口,确保端口没有被占用
    socket_dir = '/var/run/pgpool'
    pcp_listen_addresses = '*'
    pcp_port = 9898
    pcp_socket_dir = '/var/run/pgpool'
    # - Backend Connection Settings -
    backend_hostname0 = 'master'     # master为主节点ip或者hostname
    backend_port0 = 5432       #5432为主实例实际端口号
    backend_weight0 = 1
    backend_data_directory0 = '/res'     #/res为主实例实际数据路径
    backend_flag0 = 'ALLOW_TO_FAILOVER'
    backend_hostname1 = 'slave'     # slave为从节点ip或者hostname
    backend_port1 = 5432      #5432为从实例实际端口号
    backend_weight1 = 1
    backend_data_directory1 = '/res'    #/res为从实例实际数据路径
    backend_flag1 = 'ALLOW_TO_FAILOVER'
    # - Authentication -
    enable_pool_hba = on
    pool_passwd = 'pool_passwd'
    # FILE LOCATIONS
    pid_file_name = '/var/run/pgpool/pgpool.pid'
    logdir = '/var/run/pgpool '
    replication_mode = off
    load_balance_mode = on
    master_slave_mode = on
    master_slave_sub_mode = 'stream'
    sr_check_period = 5
    sr_check_user = 'srcheck'      #请根据实际用户填写
    sr_check_password = '123456'   #请根据实际密码填写
    sr_check_database = 'postgres'
    # HEALTH CHECK 健康检查
    health_check_period = 10
    health_check_timeout = 20
    health_check_user = 'srcheck'      #请根据实际用户填写
    health_check_password = '123456'      #请根据实际密码填写
    health_check_database = 'postgres'
    # FAILOVER AND FAILBACK
    failover_command = '/pg/failover_stream.sh %H'     #按照实际需要设置脚本,文中只做简单说明
    
  4. 设置failover_stream.sh脚本。

    vim /pg/failover_stream.sh
    chmod 777  /pg/failover_stream.sh
    chmod u+s /sbin/ifconfig 
    chmod u+s /usr/sbin
    pgpool -n -d -D > /var/run/pgpool/pgpool.log 2>&1 & ## 启动
    pgpool -m fast stop ## 关闭
    

    脚本内容:

    #! /bin/sh 
    # Failover command for streaming replication. 
    # Arguments: $1: new master hostname. 
    new_master=$1    #设置成实际的备节点ip或者hostname
    trigger_command="$PGHOME/bin/pg_ctl promote -D $PGDATA" 
    # Prompte standby database. 
    /usr/bin/ssh -T $new_master $trigger_command 
    exit 0;
    

    其中$PGHOME为数据库安装路径,$PGDATA为数据路径,按实际需要填写即可。

  5. 在数据库用户(如postgres)用户下运行如下命令后可登陆查看集群状态:

    pgpool -n -d -D > /var/run/pgpool /pgpool.log 2>&1 &

  6. 查看集群状态。

    [postgres@master]$ psql -p 54321 -h mater -U srcheck -d postgres

    postgres=# show pool_nodes;

    image45.png

    查看集群状态