Pgpool-II集群的高可用

集群准备
在这里插入图片描述
其中watchdog端口9000,pcp端口9898,psql服务连接端口9999

查看集群节点状态 show pool_nodes;

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | primary | 5          | true                             
 1       | 192.168.1.2   | 5432 | up     | 0.500000  | standby | 0          | false                             
(2 rows)

Pgpool服务挂了
vip目前在master端,先测试非vip端pgpool服务不可用,再测试vip端pgpool服务不可用。

非vip端pgpool不可用
停止pgpool服务

systemctl stop pgpool.service

查看节点状态,服务未中断

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | primary | 5          | false                             
 1       | 192.168.1.2   | 5432 | up     | 0.500000  | standby | 0          | true                             
(2 rows)

vip端pgpool不可用
停止pgpool服务

$ systemctl stop pgpool.service

此时 非vip端的pgpool 会主动接管vip继续对外提供服务

$ ifconfig eth0:0
eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        ether fa:f2:7d:42:75:00  txqueuelen 1000  (Ethernet)

查看节点状态,服务被接管后,继续对外提供服务

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | primary | 5          | true                             
 1       | 192.168.1.2   | 5432 | up     | 0.500000  | standby | 0          | false                             
(2 rows)

PostgreSQL挂了
standby不可用
停止postgresql服务

$ pg_ctl stop
waiting for server to shut down.... done
server stopped

此时集群节点状态会发生变化,standby节点变为down,此时集群仍然可以继续对外提供服务。

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | primary | 5          | true                             
 1       | 192.168.1.2   | 5432 | down     | 0.500000  | standby | 0          | false                             
(2 rows)

重新启动 standby 节点,模拟节点修复,重新将该节点加入集群

$ pg_ctl start
... ... ...
done
server started

$ pcp_attach_node -h 192.168.1.100 -p 9898 -U postgres -n 1
Password:
pcp_attach_node -- Command Successful

standby 重新加入集群后,状态变为up,继续对外服务。

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | primary | 5          | true                             
 1       | 192.168.1.2   | 5432 | up     | 0.500000  | standby | 0          | false                             
(2 rows)

primary不可用
当前 192.168.1.2 是 primary

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | standby | 5          | true                             
 1       | 192.168.1.2   | 5432 | up     | 0.500000  | primary | 0          | false                             
(2 rows)

停止192.168.1.2 上面的 postgresql服务

$ pg_ctl stop
waiting for server to shut down.... done
server stopped

此时查看节点状态,集群检查到 192.168.1.2 服务不可用后,自动切换 192.168.1.3 为 primary,继续对外提供服务,此时集群可读写。

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | primary | 5          | true                             
 1       | 192.168.1.2   | 5432 | down   | 0.500000  | standby | 0          | false                             
(2 rows)

postgres=# create database kong;
CREATE DATABASE
postgres=# drop database kong;
DROP DATABASE

修复节点 192.168.1.2 的服务,然后重新加入集群作为 standby 继续对外提供服务。如果主备时间线不同步,需要用 pg_rewind 命令修复时间线,然后再启动服务。

$ mv recovery.done recovery.conf
$ pg_ctl start
$ pcp_attach_node -h 192.168.1.100 -p 9898 -U postgres -n 1
Password:
pcp_attach_node -- Command Successful

节点成功加入集群,其状态为 up

$ psql -p 9999 -h 192.168.1.100 -U postgres
Password for user postgres:
psql (10.6, server 10.9)
Type "help" for help.

postgres=# show pool_nodes;
 node_id |   hostname    | port | status | lb_weight |  role   | select_cnt | load_balance_node 
---------+---------------+------+--------+-----------+---------+------------+-------------------
 0       | 192.168.1.3   | 5432 | up     | 0.500000  | primary | 5          | true                             
 1       | 192.168.1.2   | 5432 | up     | 0.500000  | standby | 0          | false                             
(2 rows)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pgpool-ii的配置可以通过源码安装或者使用yum安装来完成。如果选择源码安装,可以按照以下步骤进行配置: 1. 解压源码包:使用命令`tar -xvf pgpool-II-4.2.2.tar.gz`解压源码包。 2. 进入解压后的目录:使用命令`cd pgpool-II-4.2.2`进入解压后的目录。 3. 配置安装路径:使用命令`./configure --prefix=/usr/package/pgpool-II-4.2.2`配置安装路径。 4. 编译和安装:使用命令`make && make install`进行编译和安装。 如果选择使用yum安装,可以按照以下步骤进行配置: 1. 安装yum源:使用命令`yum install -y https://www.pgpool.net/yum/rpms/4.2/redhat/rhel-7-x86_64/pgpool-II-release-4.2-1.noarch.rpm`安装pgpool的yum源。 2. 安装pgpool:使用命令`yum install -y pgpool-II-pg11-devel.x86_64`安装pgpool。 3. 启用pgpool服务:使用命令`systemctl enable pgpool.service`启用pgpool服务。 无论是源码安装还是yum安装,配置文件都可以在`/usr/package/pgpool-II-4.2.2/etc`目录下找到。可以将`pgpool.conf.sample-stream`复制为`pgpool.conf`进行配置。 需要注意的是,从Pgpool-II 4.2版本开始,所有的配置都将通过`/etc/pgpool/`目录下的`pgpool_node_id`文件来区分节点。 另外,如果需要进行postgresql的配置流同步,可以先安装postgresql,然后根据具体需求进行配置。 希望以上信息对您有所帮助。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [pgpool-II的安装及配置读写分离的高可用pg集群](https://blog.csdn.net/qq_35997793/article/details/114028254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值