当前位置:   article > 正文

PostgreSQL高可用(二)使用pgpool实现主从切换+读写分离_pg数据库主库挂了 开发从库读写

pg数据库主库挂了 开发从库读写

1主从流复制

主从复制请看:[PostgreSQL高可用(一)主从流复制]

1.1 主机分配

  1. OS:CentOS 7
  2. 节点1:master(192.168.36.130)
  3. 节点2:slave(192.168.36.131)
  4. 节点3:slave(192.168.36.133)

2主从切换

2.1 手动切换

在上一节中,配置好了流复制结构,接下来模拟主库宕机,进行测试。

1.主库宕机
在master上执行

pg_ctl stop
  • 1

会发现测试库报错,连接不上主库。
这时我们创建触发文件。

touch /tmp/trigger_file0
  • 1

也可以放在别的目录,记得要给postgres权限。
这时,测试库会变成主库。我们在slave上的测试库中新建测试表,并插入数据。

create database test;
create teble test_1 (id int);
insert into test_1 valuse (1);
  • 1
  • 2
  • 3

将主库的recover.done变为recovery.conf

mv recovery.done recovery.conf
  • 1

启动主库

pg_ctl start
  • 1

主库会自动的发现时间线的差异,并拷贝过来。
登录主库查询,可以查到数据。
在这里插入图片描述
如果你们更改recovery.done,或者进行了别的操作,你会发现数据是不一样的。
这是你需要停掉被恢复的库,手动同步时间线。

pg_rewind  --target-pgdata=/home/postgres/data --source-server='host=slave port=5432 user=postgres dbname=postgres'
  • 1

将主库的recover.done变为recovery.conf

mv recovery.done recovery.conf
  • 1

再次启动主库。数据就已经同步了。

你可以多次手动切换进行测试,但是你会发现一个问题。
触发文件trigger_file0每次在即创建完成后并不会存在,他在切换完成后就消失了。每次都要手动创建文件的话很麻烦,所以使用pgpool进行自动切换。

2.2 pgpool 自动切换

下载地址:http://www.pgpool.net/mediawiki/images/

2.2.1 解压编译安装

tar -zxvf pgpool-II-3.6.0.tar.gz -C /opt/
cd /opt/pgpol-II/
./configure –prefix=/opt/pgpool -with-pgsql=path -with-pgsql=/home/postgres
make
make install
  • 1
  • 2
  • 3
  • 4
  • 5

2.2.2 添加环境变量

vim /etc/profile

PGPOOL_HOME=/opt/pgpool
export PGPOOL_HOME
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$PGHOME/bin:$PGPOOL_HOME/bin
export PATH
#使之生效
source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.2.3 配置pool_hba.conf

增加一下内容

host    all         all         0.0.0.0/0                md5
  • 1
[postgres@pool etc]$ pwd
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/173447
推荐阅读
相关标签
  

闽ICP备14008679号