pgpool-II简介
https://www.pgpool.net/docs/45/en/html/ 官方文档地址
pgpool-II架构图
pgpool-II进程简介
- pcp进程:pcp是一个命令行的管理工具,用户可以使用此管理工具向pgpool-II发送管 理命令。
- pgpool-II父进程:pgpool-II父进程负责检查各个底层数据库的健康状态。
- pgpool-II子进程:负责接收用户发过来的SQL请求,然后再根据规则将SQL请求发送 到底层的数据库上。
- worker进程:pgpool-II 3.X版本之后才增加的进程,负责检查底层数据库之间的复制 延迟。
- watchdog进程:可以把多个pgpool-II组成一个高可用集群,解决pgpool-II自身的高可用问题,提供了vip的管理功能。
看门狗进程详细介绍
pgpool-II在3.2版本之后把健康检查的功能从pgpool-II父进程中剥离出来,放到了一个 叫“看门狗”(watchdog)的模块中,该模块添加的功能如下。
- pgpool服务是否正常工作的检测:看门狗模块监控pgpool服务的响应是否正常,而不 是简单监控进程是否存活。它通过向被它监控的pgpool发送查询,并检查响应情况来判断 pgpool是否正常工作。看门狗进程还监控从pgpool到前端服务器的连接(如应用服务器) 。从pgpool到前端服务器的连接作为pgpool的服务来监控。
- 看门狗进程相互监控:看门狗进程交换被监控服务器的信息用来保证信息是最新的 ,并允许看门狗进程相互监控。 ·在某些故障检测中交换各自pgpool的主/备状态:当一个pgpool的故障被检测到,看门狗进程会把故障信息通知到其他的看门狗进程,同时看门狗进程会通过投票来确定哪一 个pgpool是主pgpool,哪一个是备pgpool。
- 在pgpool进行主备切换的时候自动进行虚拟IP地址的漂移:当一个备用pgpool服务器 提升为主pgpool时,相应的虚拟IP也会漂移过来。这样应用程序不需要修改配置就可以连 接到新的主pgpool上。
- 当原先发生故障的pgpool服务器恢复时,会自动注册为为备用pgpool服务器:当发生 故障的服务器恢复后,或原服务器彻底损坏通过增加新的服务器来替换原先的服务器时, 新的服务器连接上来后,新服务器上的看门狗进程通知其他的看门狗进程,新的备pgpool 服务器加进来了,让整个环境恢复成高可用状态。
pgpool-II的工作模式
pgpool-II有连接池、复制、负载均衡等功能,使用这些功能需要把pgpool-II配置在不同的工作模式下,pgpool-II有以下几种工作模式。
- 原始模式:只实现一个故障切换的功能,可以配置多个后端数据库,当第一个后端 数据库不能工作时,pgpool-II会切换到第二个后端数据库,如果第二个后端数据库也不能 工作,再切换到第三个后端数据库,依次类推。
- 内置复制(Native Replication)的模式:实际上就是把修改数据库的操作同时发送到 后端所有的数据库上进行处理,只读查询发送给任意一台数据库。此模式下可以实现负载 均衡的功能。
- 主/备模式:此模式下,使用其他软件(非pgpool自身)完成实际的数据复制,如使 用Slony-I或流复制,中间件层使用pgpool-II。此时,pgpool-II主要提供高可用和连接池的 功能。在主/备模式中,DDL和DML操作在主节点上执行,SELECT语句可以在主备节点 上执行,当然也可以强制SELECT语句在主节点上执行,但需要在SELECT语句前添加“/* NO LOAD BALANCE*/”注释。
pgpool-II 3.0版本之后支持配合使用流复制+Standby的主/备模式,这基本是现在的主流模式。所以此文我们是基于这种模式部署的。操作步骤很多,请注意哪些是在所有节点执行,哪些是只在主节点执行
1.环境规划
1.1 节点信息
主机
| hostname
| 节点配置
| 角色
| 组件
| vip
| 10.0.0.41
| postgres-01
| Centos7.9 4c/8GB
| Leader
| PostgreSQL 15.5、pgpool-II-4.5.6
| 10.0.0.44
| 10.0.0.42
| postgres-02
| Centos7.9 4c/8GB
| standby1
| PostgreSQL 15.5、pgpool-II-4.5.6
| 10.0.0.43
| postgres-03
| Centos7.9 4c/8GB
| standby2
| PostgreSQL 15.5、pgpool-II-4.5.6
|
1.2PostgreSQL版本和配置
Item
| Value
| Detail
| PostgreSQL Version
| 15.5
| -
| port
| 5432
| -
| $PGDATA
| /data/pgsql/data
| -
| Archive mode
| on
| /data/pgsql/archive
| Replication Slots
| Enabled
| | Async/Sync Replication
| Async
| -
|
1.3 Pgpool-II版本与配置
Item
| Value
| Detail
| Pgpool-II Version
| 4.4.5
| -
| port
| 9999
| Pgpool-II接收连接
| 9898
| PCP 进程接收连接
| 9000
| 看门狗接收连接
| 9694
| UDP port接收看门狗心跳信号
| Config file
| /usr/local/pgpool/etc/pgpool.conf
| -
| User running Pgpool-II
| postgres (Pgpool-II 4.1 or later)
| Pgpool-II 4.0 or before, the default user running Pgpool-II is root
| Running mode
| streaming replication mode
| -
| Watchdog
| on
| Life check method: heartbeat
|
1.4 相关脚本
模块
| 脚本名
| 说明
| Failover
| failover.sh
| 用于启动failover
| follow_primary.sh
| failover之后从节点与新主节点的同步
| Online recovery
| recovery_1st_stage
| 用于恢复从节点的数据
| pgpool_remote_start
| 用于启动从节点
| Watchdog
| escalation.sh
| 用于安全的切换主从
|
2.系统准备
注意:以下操作在所有节点进行
2.1 安装依赖
- yum install -y yum-utils openjade docbook-dtds docbook-style-dsssl docbook-style-xsl
- yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel zlib
- yum install -y yum-builddep flex libselinux-devel libxml2-devel libxslt-devel openssl-devel pam-devel readline-devel libcurl-devel json-c-devel
复制代码 2.2 配置域名解析
- #所有节点
- cat >> /etc/hosts << EOF
- 10.0.0.41 postgres-01
- 10.0.0.42 postgres-02
- 10.0.0.43 postgres-03
- EOF
复制代码 2.3 创建用户与目录
- #所有节点
- groupadd -g 701 postgres
- useradd -g 701 -u 701 -s /bin/bash -m postgres
- passwd postgres
- mkdir /data/pgsql/{data,log,archive} -p
- mkdir /data/pgpool/log -p
- chown -R postgres.postgres /data
- # Pgpool-II运行的进程通常是在后台运行,没有关联的终端,所以如果不做处理,在执行 if_up_cmd、if_down_cmd 和 arping_cmd 这些带有 sudo 的命令时就会失败
- visudo
- Defaults:postgres !requiretty
- postgres ALL=(ALL) NOPASSWD: /sbin/ip,/usr/sbin/arping
复制代码 2.4 配置互信
- #所有节点都要与其它节点互信,需要特殊配置私钥文件得名称为id_rsa_pgpool,因为pgpool的很多配置文件里面的变量都已经写好了这个名字
- (1)生成公钥
- su - postgres
- mkdir /home/postgres/.ssh
- cd /home/postgres/.ssh
- ssh-keygen -t rsa -f id_rsa_pgpool
- s
- (2)将公钥分发到所有节点
- for i in {1..3};do ssh-copy-id -i id_rsa_pgpool.pub postgres@postgres-0$i;done
- (3)修改权限
- chmod 600 ~/.ssh/*
- chmod 644 ~/.ssh/*.pub
- chmod 700 ~/.ssh
- (4)互信验证
- for i in {1..3};do ssh postgres@postgres-0$i -i id_rsa_pgpool hostname;done
- for i in {1..3};do ssh postgres@postgres-0$i -i id_rsa_pgpool.pub hostname;done
复制代码
2.5 系统优化
- > /etc/sysctl.conf
- cat >> /etc/sysctl.conf << EOF
- vm.swappiness = 0
- vm.overcommit_memory=2
- vm.overcommit_ratio=90
- vm.dirty_background_ratio = 10
- vm.dirty_ratio = 20
- #测试环境物理内存8G,数据节点shared_buffer=2G,最大连接数500为例,进行如下设置
- # SEMMSL SEMMNS SEMOPM SEMMNI
- kernel.sem=300 60000 100 200
- vm.nr_hugepages=1500
- EOF
- sysctl -p
- echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
- echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
- chmod +x /etc/rc.d/rc.local
- cat >> /etc/rc.local << EOF
- #修改为数据库系统盘符
- blockdev --setra 4096 /dev/sdc
- echo deadline > /sys/block/sdc/queue/scheduler
- if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
- echo never > /sys/kernel/mm/transparent_hugepage/enabled
- fi
- if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
- echo never > /sys/kernel/mm/transparent_hugepage/defrag
- fi
- EOF
- cat /sys/kernel/mm/transparent_hugepage/enabled
- cat /sys/kernel/mm/transparent_hugepage/defrag
- > /etc/security/limits.conf
- cat >> /etc/security/limits.conf << EOF
- * soft nofile 65536
- * hard nofile 65536
- * soft nproc 131072
- * hard nproc 131072
- * soft memlock -1
- * hard memlock -1
- EOF
- systemctl stop firewalld
- systemctl disable firewalld
- setenforce 0
- sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
复制代码 3.软件安装
注意:以下操作在所有节点进行
3.1 安装postgresql
- #所有节点
- (1)编译安装
- cd /opt
- wget https://ftp.postgresql.org/pub/source/v15.5/postgresql-15.5.tar.gz
- tar xf postgresql-15.5.tar.gz
- cd postgresql-15.5
- ./configure --prefix=/usr/local/postgresql-15.5 --with-perl --with-python
- make && make install
- (2)创建软连接,方便日后升级
- ln -sf /usr/local/postgresql-15.5 /usr/local/pgsql
- (3)安装contrib目录下的工具
- cd contrib/
- make && make install
- (4)加入环境变量
- [root@Postgres-01 contrib]# vi /etc/profile
- export PATH=/usr/local/pgsql/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
- export PGDATA=/data/pgsql/data
- export PGHOST=/tmp
- [root@Postgres-01 contrib]# source /etc/profile
- (5)验证安装
- [root@Postgres-01 contrib]# psql -V
- psql (PostgreSQL) 15.5
复制代码 3.2 安装pgpool
- cd /opt
- wget https://www.pgpool.net/mediawiki/download.php"export PATH=/usr/local/pgpool/bin/:$PATH">> /etc/profile
- [postgres@postgres-01 pgpool-II-4.5.6]$ source /etc/profile
- # 安装pgpool_recovery
- cd ./src/sql/pgpool-recovery/
- make && make install
复制代码 4.数据库主节点配置
注意:以下操作只在主节点进行
4.1 初始化主节点
- [root@postgres-01 ~]# su - postgres
- [postgres@postgres-01 ~]$ initdb -D $PGDATA
复制代码 4.2 编辑配置文件
- [postgres@postgres-01 ~]$ cd $PGDATA
- > postgresql.conf
- cat >> postgresql.conf << EOF
- ############# Connection #############
- listen_addresses = '*'
- port = 5432
- max_connections = 500
- superuser_reserved_connections = 3
- ############# Buffer #############
- shared_buffers = 2GB
- temp_buffers = 8MB
- work_mem = 4MB
- huge_pages = on
- ############# Log #############
- logging_collector = on
- log_min_messages = warning
- log_statement = ddl
- log_directory = '/data/pgsql/log'
- log_filename = 'postgresql-%Y-%m-%d.log'
- log_truncate_on_rotation = off
- log_rotation_age = 1d
- log_rotation_size = 0
- ############# Wal #############
- wal_level = replica
- wal_compression = on
- max_wal_senders = 10
- wal_log_hints = on
- fsync = on
- archive_mode = on
- archive_command = 'cp "%p" "/data/pgsql/archive"'
- ############# VACUUM #############
- autovacuum = on
- autovacuum_max_workers = 10
- ############ 流复制 ##############
- hot_standby=on
- hot_standby_feedback=on
- max_replication_slots = 10
- EOF
复制代码 4.3 启动主节点
- [postgres@postgres-01 data]$ pg_ctl start -D $PGDATA
- # 安装pgpool_recovery扩展
- # 如果一个节点损坏,要在线把失败的节点再加回集群,需要使用到函数"pgpool_recovery"、"pgpool_remote_start"、"pgpool_switch_xlog"。另外,附带工具pgpoolAdmin控制pgpoolII启停和重新连接后端的PostgreSQL节点,需要使用函数"pgpool_pgctl"。这些函数都在pgpool提供的扩展插件pgpool_recovery中
- [postgres@postgres-01 ~]$ psql template1
- psql (15.5)
- Type "help" for help.
- template1=# CREATE EXTENSION pgpool_recovery;
复制代码 4.4 创建用户
用户名
| Password
| 说明
| repl
| Repl@123
| PostgreSQL流复制用户
| pgpool
| Pgpool@123
| Pgpool-II ( health_check_user) and ( sr_check_user)
| postgres
| Postgres@123
| User running online recovery
| appuser
| Appuser@123
| 业务用户
|
- [postgres@postgres-01 data]$ psql
- set password_encryption = md5;
- CREATE user pgpool password 'Pgpool@123';
- GRANT pg_monitor TO pgpool;
- CREATE user repl replication password 'Repl@123';
- alter user postgres password 'Postgres@123';
- CREATE USER appuser WITH PASSWORD 'Appuser@123' login;
- create database appdb;
- \c appdb
- GRANT USAGE ON SCHEMA public TO appuser;
- GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO appuser;
- ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO appuser;
复制代码
4.5 配置访问控制文件
- [postgres@postgres-01 data]$ vim pg_hba.conf
- host replication repl 10.0.0.0/24 md5
- host all pgpool 10.0.0.0/24 md5
- host all postgres 10.0.0.0/24 md5
- host all postgres 127.0.0.1/32 md5
- local all postgres md5
- host appdb appuser 10.0.0.0/24 md5
- # 重新加载配置
- [postgres@postgres-01 data]$ psql
- postgres=# select pg_reload_conf();
复制代码 5.pgpool配置
5.1 相关脚本配置
- (1)所有节点做的操作
- [root@postgres-01 ~]# chown -R postgres.postgres /usr/local/pgpool
- cd /usr/local/pgpool/etc
- cp pool_hba.conf.sample pool_hba.conf
- cp pcp.conf.sample pcp.conf
- cp pgpool.conf.sample pgpool.conf
- cp follow_primary.sh.sample follow_primary.sh
- cp failover.sh.sample failover.sh
- cp escalation.sh.sample escalation.sh
- cp recovery_1st_stage.sample recovery_1st_stage
- cp pgpool_remote_start.sample pgpool_remote_start
- chmod +x follow_primary.sh
- chmod +x failover.sh
- chmod +x escalation.sh
- chmod +x recovery_1st_stage
- chmod +x pgpool_remote_start
- mkdir sample
- mv *.sample sample
- (2)主节点操作
- mv recovery_1st_stage /data/pgsql/data
- mv pgpool_remote_start /data/pgsql/data
复制代码 配置failover.sh
注意:以下操作在所有节点进行
在检测到 PostgreSQL 后端节点出现故障时,自动执行一系列操作以实现故障转移,从而保障数据库服务的高可用性 - # 所有节点
- # 修改failover.sh文件中的如下配置
- # PGHOME=/usr/local/pgsql
- cd /usr/local/pgpool/etc
- sed -i 's/^PGHOME=.*/PGHOME=\/usr\/local\/pgsql/' /usr/local/pgpool/etc/failover.sh
复制代码 配置follow_primary.sh
注意:以下操作在所有节点进行 - # 修改/usr/local/pgpool/etc/follow_primary.sh文件中的如下配置
- # PGHOME=/usr/local/pgsql/
- # ARCHIVEDIR=/data/pgsql/archive
- # PGPOOL_PATH=/usr/local/pgpool/bin
- # 95行左右的.pgpass文件路径由/var/lib/pgsql/.pgpass更改为/home/postgres/.pgpass
- # failover后,新主节点的连接信息,写入到什么文件,RECOVERYCONF=${NODE_PGDATA}/postgresql.auto.conf
- cd /usr/local/pgpool/etc
- sed -i 's/^PGHOME=.*/PGHOME=\/usr\/local\/pgsql/' follow_primary.sh
- sed -i 's/^ARCHIVEDIR=.*/ARCHIVEDIR=\/data\/pgsql\/archive/' follow_primary.sh
- sed -i 's/^PGPOOL_PATH.*/PGPOOL_PATH=\/usr\/local\/pgpool\/bin/' follow_primary.sh
- sed -i 's/\/var\/lib\/pgsql/\/home\/postgres/' follow_primary.sh
- sed -i 's/myrecovery.conf/postgresql.auto.conf/' follow_primary.sh
复制代码 配置recovery_1st_stage
注意:以下操作在主节点执行
# 官方原文:出于安全原因,该命令文件必须放置在数据库数据目录中。例如,如果recovery_1st_stage_command = 'sync-command',则Pgpool-II将在$PGDATA目录中查找命令脚本,并尝试执行$PGDATA/sync-command - # 修改/data/pgsql/data/recovery_1st_stage文件中的如下配置:
- # PGHOME=/usr/local/pgsql
- # ARCHIVEDIR=/data/pgsql/archive
- # REPLUSER=repl
- # 在56行左右的pg_basebackup命令的后面加上-R参数
- # 59行左右的.pgpass文件路径由/var/lib/pgsql/.pgpass更改为/home/postgres/.pgpass
- cd /usr/local/pgpool/etc
- sed -i 's/^PGHOME=.*/PGHOME=\/usr\/local\/pgsql/' recovery_1st_stage
- sed -i 's/^ARCHIVEDIR=.*/ARCHIVEDIR=\/data\/pgsql\/archive/' recovery_1st_stage
- sed -i 's/^REPLUSER=.*/REPLUSER=repl/' recovery_1st_stage
- sed -i 's/-X stream/-X stream -R/' recovery_1st_stage
- sed -i 's/\/var\/lib\/pgsql/\/home\/postgres/' recovery_1st_stage
复制代码 配置pgpool_remote_start
注意:以下操作在主节点执行
官方原文:
注意:脚本路径和文件名是硬编码的,$PGDATA/pgpool_remote_start在主节点上执行。 - # 修改/data/pgsql/data/pgpool_remote_start文件中的如下配置
- # PGHOME=/usr/local/pgsql
- cd /usr/local/pgpool/etc
- sed -i 's/^PGHOME=.*/PGHOME=\/usr\/local\/pgsql/' pgpool_remote_start
复制代码 配置escalation.sh
注意:以下操作在所有节点进行
主要用于当前 Pgpool 节点被选举为 Leader 时,执行 VIP切换和资源接管 - # 修改escalation.sh文件中的如下配置
- # PGPOOLS=(10.0.0.41 10.0.0.42 10.0.0.43)
- # VIP=10.0.0.44
- # DEVICE=ens33
- cd /usr/local/pgpool/etc
- sed -i 's/^PGPOOLS.*/PGPOOLS=(10.0.0.41 10.0.0.42 10.0.0.43)/' escalation.sh
- sed -i 's/^VIP.*/VIP=10.0.0.44/' escalation.sh
- sed -i 's/^DEVICE.*/DEVICE=ens33/' escalation.sh
复制代码 5.2 访问控制文件与密码验证文件
注意:以下操作在所有节点进行
配置pool_hba.conf
用于客户端到pgpool的访问控制 - [postgres@postgres-01 etc]$ cd /usr/local/pgpool/etc
- [postgres@postgres-01 etc]$ > pool_hba.conf
- cat >> pool_hba.conf << EOF
- host all pgpool 10.0.0.0/24 md5
- host all pgpool 127.0.0.1/32 md5
- host all postgres 10.0.0.0/24 md5
- host all postgres 127.0.0.1/32 md5
- local all postgres md5
- host appdb appuser 10.0.0.0/24 md5
- EOF
复制代码 配置pool_passwd文件
用于客户端到pgpool的用户密码验证 - [postgres@postgres-01 etc]$ cd /usr/local/pgpool/etc
- pg_md5 -p -m -u postgres pool_passwd
- password: (输入密码Postgres@123)
- pg_md5 -p -m -u pgpool pool_passwd
- password: (输入密码Pgpool@123)
- pg_md5 -p -m -u appuser pool_passwd
- password: (输入密码Appuser@123)
- [postgres@postgres-01 etc]$ cat pool_passwd
- postgres:md5dd27d33705155fd675e498384ad3d2ea
- pgpool:md52a23dd6e92c7f1d2a42fafbb757ef026
- appuser:md5af0df380d022abbae08aeff4d162a25b
复制代码 配置pcp.conf文件
对 PCP(Pgpool-II Command Prompt)工具的认证信息进行管理,独立哈希算法(非标准 MD5) ,纯 32 位哈希字符串(无md5前缀) - echo 'pgpool:'`pg_md5 Pgpool@123` > /usr/local/pgpool/etc/pcp.conf
- echo 'postgres:'`pg_md5 Postgres@123` >> /usr/local/pgpool/etc/pcp.conf
- [postgres@postgres-01 data]$ cat /usr/local/pgpool/etc/pcp.conf
- pgpool:a6270f3fee9602c6d2754b7515e85ac3
- postgres:c3178349c6ad5ddaecf81e15616be142
复制代码 配置pgpool_node_id文件
从 Pgpool-II 4.2 开始,所有主机的所有配置参数都相同。如果启用了监视器功能,以消除对哪个主机是哪个主机的干扰,则需要pgpool_node_id文件 - [postgres@postgres-01 .ssh]$ echo "0" >> /usr/local/pgpool/etc/pgpool_node_id
- [postgres@postgres-02 .ssh]$ echo "1" >> /usr/local/pgpool/etc/pgpool_node_id
- [postgres@postgres-03 .ssh]$ echo "2" >> /usr/local/pgpool/etc/pgpool_node_id
复制代码 配置.pgpass文件
当 Pgpool 需要连接后端 PostgreSQL 节点进行(健康检查、故障转移、负载均衡)时,提供用户名和密码 - cat >> /home/postgres/.pgpass << EOF
- 10.0.0.41:5432:replication:repl:Repl@123
- 10.0.0.42:5432:replication:repl:Repl@123
- 10.0.0.43:5432:replication:repl:Repl@123
- 10.0.0.41:5432:postgres:postgres:Postgres@123
- 10.0.0.42:5432:postgres:postgres:Postgres@123
- 10.0.0.43:5432:postgres:postgres:Postgres@123
- EOF
- chmod 0600 /home/postgres/.pgpass
复制代码 配置.pcppass 文件
.pcppass 文件可让用户在使用 PCP 工具时无需每次都手动输入用户名和密码,从而实现自动认证。 - cat >> /home/postgres/.pcppass << EOF
- localhost:9898:pgpool:Pgpool@123
- 10.0.0.41:9898:pgpool:Pgpool@123
- 10.0.0.42:9898:pgpool:Pgpool@123
- 10.0.0.43:9898:pgpool:Pgpool@123
- EOF
- chmod 600 /home/postgres/.pcppass
复制代码 5.3 编辑主配置文件
注意:以下操作在所有节点进行 6. 集群启动
6.1 启动pgpool
- # 所有节点启动
- # 注意第一个启动的pgpool并不会直接挂载vip,要在第二个pgpool启动之后才会选举出leader,在leader上挂载vip
- pgpool -f /usr/local/pgpool/etc/pgpool.conf -D
- # 启动完之后会在主节点的日志中出现以下内容,证明成功的将 VIP 添加到网络接口
- 2025-04-17 16:45:44.385: watchdog_utility pid 1676: LOG: watchdog escalation successful
- 2025-04-17 16:45:48.419: watchdog_utility pid 1676: LOG: successfully acquired the delegate IP:"10.0.0.44"
- 2025-04-17 16:45:48.419: watchdog_utility pid 1676: DETAIL: 'if_up_cmd' returned with success
复制代码
6.2 启动后端数据库从节点
会在主节点触发recovery_1st_stage、pgpool_remote_start两个脚本,从主节点克隆数据,并直接启动从节点 - [postgres@postgres-02 ~]$ pcp_recovery_node -h 10.0.0.41 -p 9898 -U pgpool --node-id=1 -v -w
- pcp_recovery_node -- Command Successful
- [postgres@postgres-03 etc]$ pcp_recovery_node -h 10.0.0.41 -p 9898 -U pgpool --node-id=2 -v -w
- pcp_recovery_node -- Command Successful
复制代码 6.3 查看集群状态
使用vip连接pgpool 9999端口,查看后端数据库 - [postgres@postgres-01 etc]$ PGPASSWORD="Postgres@123" psql -h10.0.0.44 -p 9999
- psql (15.5)
- Type "help" for help.
- postgres=# SELECT inet_server_addr() AS backend_host,inet_server_port() AS backend_port,current_database(),current_user;
复制代码
查看流复制 - postgres=# select usename,client_addr,sync_state from pg_stat_replication;
复制代码
查看pool_node节点信息 - postgres=# show pool_nodes;
复制代码
到此这篇关于pgpool-II搭建集群,实现高可用与读写分离的文章就介绍到这了,更多相关pgpool-II实现高可用与读写分离内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |