Greenplum集群具有较好的容错性和高可用性,其中一点就体现在segment镜像机制上。接下来本文会简单地阐述segment的作用以及segment镜像机制是如何保证GP高可用的。
Segment简介
Greenplum集群由一个Master和多个segment组成
segment用来存储数据
一台机器可以有多个segment
每个segment是一个postgres数据库实例
当Greenplum启用镜像时,对每个segment都有一对primary segment和mirror segment。 primary segment和mirror segment被分布在不同的机器上,但是存储的是同一份数据。
Segment故障切换
当Greenplum集群启用镜像后,如果primary segment不可用,系统会启用备用mirror segment。所以当一个或多个segment出现问题时,只要剩余segment的所有数据可用,Greenplum集群就可以保持正常运行。如果GP集群没有启用镜像,当一个segment发生故障后后导致整个GP集群停止服务,直到所有segment恢复正常。
如果Master节点无法连接到一个segment,Master会在GP系统目录中标记该segment状态为宕机,并且启用镜像数据。
Segment故障检测
在Master主机上,Postgres的主进程postmaster会派生一个子进程ftsprobe(FTS)用于故障探测。如果FTS失败,postmaster会重启它。FTS会按照 数据库 配置周期性的请求各segment,并扫描segment的状态。
如果FTS