暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

PostgreSQL高可用使用Pacemaker+Corosync,泰裤了!

1025
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理

微信:jem_db
QQ交流群:587159446
公众号:IT邦德

文章目录

前言

本文介绍了基于Pacemaker+Corosync实现的PostgreSQL的高可用

1.高可用架构

Pacemaker用于资源的转移,corosync用于心跳的检测。结合起来使用,实现对PostgreSQL高可用架构的自动管理。心跳检测用来检测服务器是否还在提供服务,若出现服务器异常,就认为它挂掉了,此时pacemaker将会对资源进行转移。pcs是Corosync和Pacemaker配置工具。

2.架构介绍

2.1 pacemaker

pacemaker是Linux环境中使用最为广泛的开源集群资源管理器(Cluster Resource Manager,简称CRM), Pacemaker利用集群基础架构(Corosync或者 Heartbeat)提供的消息和集群成员管理功能,实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用。是整个高可用集群的控制中心,用来管理整个集群的资源状态行为。客户端通过 pacemaker来配置、管理、监控整个集群的运行状态。

官网地址
https://clusterlabs.org/pacemaker/
github地址
https://github.com/ClusterLabs/pacemaker

2.2 Corosync

Corosync集群引擎是一种群组通信系统(Group Communication System),为应用内部额外提供支持高可用性特性。corosync属于消息网络层,对外提供服务和主机的心跳检测,在监控的主服务被发现当机之后,即时切换到从属的备份节点,保证系统的可用性。一般来说都是选择corosync来进行心跳的检测,搭配pacemaker的资源管理系统来构建高可用的系统。

2.3 pcs

pcs是Corosync和Pacemaker配置工具。它允许用户轻松查看,修改和创建基于Pacemaker的集群。pcs包含pcsd(一个pc守护程序),它可作为pc的远程服务器并提供Web UI。全部受控的 pacemaker和配置属性的变更管理都可以通过 pcs实现。

3.集群状态检查

3.1 重新启动集群

--数据库无需配置自启动,由集群软件自动拉起
[root@pg01 ~]# pcs cluster start --all
[root@pg01 ~]# pcs cluster status
[root@pg01 ~]# pcs status corosync

3.2 集群状态确认

--查看本机集群状态及资源状态
crm_mon -Afr -1

--查看vip挂载情况
节点1

--查看vip挂载情况
节点2

[root@pg01 ~]# pcs resource show
 Master/Slave Set: msPostgresql [pgsql]
     Masters: [ pg01 ]
     Slaves: [ pg02 pg03 ]
 Resource Group: master-group
     vip-master (ocf::heartbeat:IPaddr2):       Started pg01
 Resource Group: slave-group
     vip-slave  (ocf::heartbeat:IPaddr2):       Started pg02

3.3 主从流复制状态

[root@pg01 ~]# su - postgres
Last login: Sat May 18 22:20:25 CST 2024 on pts/0
[postgres@pg01 ~]$ psql
psql (11.10)
Type "help" for help.

postgres=# select * from pg_stat_replication;

4.数据同步验证

主节点插入数据
psql -h 192.168.3.13 -p5432 -U postgres
create table test(id int);
insert into test values(1);
从库查询如下:

5.故障切换

5.1 主库故障

停掉主库,节点2提升为主节点,节点3自动指向节点2
[postgres@pg01 ~]$ pg_ctl stop -D /pgdata
[root@pg01 ~]# pcs status

[root@pg01 ~]# crm_mon -Arf -1

postgres=# select * from pg_stat_replication;

5.2 故障节点修复

在master宕机启动时,需要删除临时锁文件方可进行集群角色转换。
即执行rm -rf /var/lib/pgsql/tmp/PGSQL.lock。
拉起数据库不需要执行pg_ctl start,
只需重启服务
systemctl restart corosync pacemaker pcsd
软件会自动把数据库拉起。
节点1启动后,作为节点2的从库:

6.集群常用操作

pcs status //查看集群状态
pcs resource show //查看资源
pcs resource cleanup
表示虚拟资源名称,当集群有资源处于unmanaged的状态时,
可以用这个命令清理掉失败的信息,然后重置资源状态
pcs resource list //查看资源列表
pcs resource restart //重启资源
pcs resource enable //启动资源
pcs resource disable //关闭资源
pcs resource delete //删除资源
crm_mon -Arf -1  //查看同步状态和资源

7.总结

Pacemaker+Corosync高可用架构旨在保证系统能够在发生硬件或软件故障时仍然能够持续运行,提供稳定可靠的PostgreSQL服务.

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论