PostgreSQL(三)pgpool管理PostgreSQL集群下主机宕机后的主从切换
在前两篇文章的基础上
PostgreSQL(一)PostgreSQL一主二从集群部署
PostgreSQL(二)PostgreSQL一主二从集群之上部署双节点pgpool-II
本文介绍了,当故障发生时的处理办法。
对于status中数字的含义:1:节点启动,还没有被连接 2:节点启动,已经被连接 3:节点down掉了
1模拟主节点服务故障
在主机上执行,停止postgreql的命令,模拟PostgreSQL进程出现故障。而pgpool的服务未受影响。
systemctl stop postgresql |
再次查询,结果如图所示。节点0 的role被切换为standby节点1的role被切换为primary。再看状态,节点0状态down掉了。
2.手动将节点2加入集群中
在实际应用过程中,节点0挂掉之后主节点自动切换到节点1,此时只有节点1正常工作,用户对此并无感知,通过配置的VIP连接数据库,此时仍在继续读写数据。
节点2在虽然在pgpool中的显示是连接状态,但是,它却并不在集群当中。
在节点1中写数据,自然无法同步。
此时人工操作,将节点2加入集群中。
第一步、将数据同步过来。并做好配置。
-bash-4.2$ rm -rf /var/lib/pgsql/data/* -bash-4.2$ pg_basebackup -h 192.168.149.237 -U repl -D /var/lib/pgsql/data -X stream -P -bash-4.2$vi /var/lib/pgsql/data/recovery.conf standby_mode = on primary_conninfo = 'host=192.168.149.237 port=5432 user=repl password=fanxiaoguang@0' recovery_target_timeline = 'latest' trigger_file = '/tmp/trigger_file0' |
第二步、重启,之后发现,从节点已经生效了。
数据库的内容已经同步进来。
如果节点2状态出现down的情况。那么可以手动改变一下状态。
在node238节点执行命令
pcp_attach_node 10 localhost 9898 postgres postgres 2 |
其中参数10表示一个时间,不重要。localhost就是要手动加入的节点,postgres postgres分别代表用户名和密码,2代表节点ID。
重新登陆后,节点状态发生改变。
3手动将节点0加入集群中
假设节点0的故障已经修好了。此时,应只是将节点0当作一个普通standby库来看待。配置方法与节点2配置方法相同。
在节点0上将自身加入集群中,重连后,整个集群恢复如初。执行命令
pcp_attach_node 10 localhost 9898 postgres postgres 0 |
而此时,节点0不再是主节点了,是一个只读的数据库了。
PostgreSQL(三)pgpool管理PostgreSQL集群下主机宕机后的主从切换相关推荐
- kafka服务器死机消息,当kafka集群其中一台宕机后,会怎么样?
一.介绍 我们搭建好kafka集群后,对其进行性能测试.遇到这种场景:我搭建好了三台kakfa集群,然后停掉其中一台kafka,然后集群是否能正常工作呢? kafka集群: 192.168.183.5 ...
- 《叶问》37期,三节点的MGR集群关掉两个节点后还能继续读写吗
不发碎碎念了,唠叨那些没啥意思,重回『叶问』正轨. 1. 三节点的MGR集群关掉两个节点后还能继续读写吗 这里要先明确一个前提,两个节点是正常关闭MGR服务,还是异常宕机. 如果两个节点是手动执行 s ...
- Debezium系列之:使用Debezium接入PostgreSQL数据库数据到Kafka集群的详细技术文档
Debezium系列之:使用Debezium接入PostgreSQL数据库数据到Kafka集群的详细技术文档 一.概述 二.连接器的工作原理 1.安全 2.快照 3.Ad hoc snapshots ...
- config kubectl_使用kubectl管理k8s集群(三十)
前言 Foreword 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用. 在 ...
- 使用kubectl管理k8s集群(三十)
前言 Foreword 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系,但是请记住主要的语法和命令以及帮助命令的使用. 在 ...
- delete kubectl pod_使用kubectl管理k8s集群(三十)
原标题:使用kubectl管理k8s集群(三十) 前言 Foreword 在搭建k8s集群之前,我们需要先了解下kubectl的使用,以便在集群部署出现问题时进行检查和处理.命令和语法记不住没有关系, ...
- 集群学习分享2:pcs+postgresql一主两从集群搭建
本文介绍集群学习分享:CentOS7使用pcs+nginx+nfs快速搭建web 在web架构基础上再加入pcs+postgresql数据库高可用: 配置之前最好先做快照 虚拟机节点基本信息: 主机名 ...
- 数据源管理 | Kafka集群环境搭建,消息存储机制详解
本文源码:GitHub·点这里 || GitEE·点这里 一.Kafka集群环境 1.环境版本 版本:kafka2.11,zookeeper3.4 注意:这里zookeeper3.4也是基于集群模式部 ...
- 融云发送自定义消息_数据源管理 | Kafka集群环境搭建,消息存储机制详解
一.Kafka集群环境 1.环境版本 版本:kafka2.11,zookeeper3.4 注意:这里zookeeper3.4也是基于集群模式部署. 2.解压重命名 tar -zxvf kafka_2. ...
最新文章
- MLOps是构建在一个谎言上的吗?
- https下 http的会被阻塞 This request has been blocked; the content must be served over HTTPS.
- 深入分析线程池的实现原理
- 确定需要改变几个位,才能将整数A转变为整数B
- java使用:: 表达式_Java 13:切换表达式的增强功能
- svn add Default@2x.png的文件含有@的文件名注意事项
- jQuery中的动画理论干货
- .net core精彩实例分享 -- 网络编程
- [Silverlight入门系列]用TransformToVisual和Transform取得元素绝对位置(Location)
- git bash here 找不到应用程序_git 简单命令
- REST another WebService???
- linux下升级mysql_linux下mysql升级
- Svn内外网切换技巧
- 苹果手机登录华为账号无法连接服务器,华为手机登录华为帐号时,显示“没法连接到服务器”是什么情况?...
- 测试开发进阶——常用中间件概念——线程与线程池理解
- c++ protobuf中repeated类型使用——序列化
- hive percentile_approx原理
- 程序猿杂记——七年之痒
- JAVA写100以内的偶数和
- 索引的数据结构与优缺点
热门文章
- ubuntu makefile交叉编译报错:file not recognized: file format not recognized
- 我的2020电视机选购
- python3 字符串前字母(无前缀,前缀u,前缀b,前缀r)含义
- Python中read( )与readlines( )的使用
- java 好用的工具类
- QT安卓web使用mysql_Qt使用MySQL笔记一
- Elasticsearch中如何进行日期(数值)范围查询
- java将数组元素倒置(反转)的方法?我只想到了5种,有其他方式欢迎补充
- 这台计算机似乎没有安装操作系统_前沿科技 | 浙江大学科学家联合之江实验室成功研制全球神经元规模最大的类脑计算机...
- 交流信号叠加直流偏置_交流变频空调器室内机电路 (二)