GBase8a 高可用机制
高可用机制
GBase 8a MPP Cluster 通过集群的高可用机制,可以实现故障节点的快速切换,保障集群服务正常运转。 首先我们来看一下一条 SQL 语句从发起到返回结果的整个过程:
1、用户发起 SQL 连接请求到一个 gcluster 节点。
2、gcluster 节点接收请求并对 SQL 进行解析,生成执行计划。
3、gcluster 按照生成的执行计划将分解的 SQL 下发到相应的 data 节点。
4、data 节点在本地计算、存储并将计算结果返回给 gcluster 节点。
5、gcluster 节点将从各 data 节点收集到的计算结果进行汇总和处理后返回给用户。 在此期间,集群若发现 Gcluster 节点故障,会通过 Failover 机制切换其它的 Gcluster 节点,继续提供服务;
所谓 Failover 机制,请参看下图:

在 SQL 操作执行过程中,下发执行任务的 gcluster 节点突然由于故障处于 offline 状态,gcware 会监测 并注册 failover,并安排正常可用的 gcluster 来依次领取并接管任务,每次每个 gcluster 接管一条 failover 任 务。接管 failover 任务的 gcluster 们可同时并行执行。执行成功并提交后,failover 信息将从 gcware 中被删除。 整个过程对用户完全透明。
如果 SQL 执行过程中出现 gnode 节点故障,gcware 将设置该节点的 gbased 服务为 close,新 sql 不再下 发至该 gnode 节点,而是下发至该故障节点的备份分片所在的节点。
当这种情况发生时,gcware 每 30 秒定时检测问题节点,直至恢复正常。 默认情况下,gcware 每 600 秒定时检测所有集群节点的服务并更新集群服务状态。
用户可以通过执行 gcadmin 命令,使 gcware 即时刷新集群节点的服务状态。
数据一致性
Gbase 8a MPP Cluster 数据库是通过记录和恢复 event 日志,实现数据的一致性。
Event 日志分为三种:
DDLEVENT 日志、DMLEVENT 日志、STORAGEEVENT 日志。
恢复 DDLEVENT 日志
DDLEVENT 日志是记录集群在执行 DDL 语句期间由于节点或进程故障导致的节点 DDL 执行信息不一致所 产生的 event 信息。gcware 会记录 DDLEVENT,并通知 gcluster 节点调用 gcrecover 进程,启用自动恢复过程。 恢复过程中,故障节点会重新执行 DDL,成功后会由 gcrecover 告知 gcware,gcware 中删除该 DDLEVENT。
执行过程参见下图:

恢复 DMLEVENT 日志
DMLEVENT 日志是记录集群在执行 DML 语句期间由于节点或进程等问题引起的节点间主备分片不一致 的信息。gcware 会监测并记录 DMLEVENT,然后通知 gcluster 节点调用 gcrecover 进程启用自动恢复过程。
gcrecover 联系故障 data 节点的 gc_sync_cli,并调用 gc_sync_server 进程实施分片同步和拷贝工作。
主备分片记录的都是用户数据。用户数据恢复完成后由 gcrecover 告知 gcware,在 gcware 中删除该 DMLEVENT。
执行过程参见下图:

恢复 STORAGEEVENT 日志:
如果一个分片的元数据和用户数据都损坏就会转变为 STORAGEEVENT,所以 DDLEVENT 和 DMLEVENT 在 一定条件下会转化为 STORAGEEVENT。
STORAGEEVENT 的恢复过程是先恢复 DDLEVENT,然后恢复 DMLEVENT。 执行过程参见下图:

热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526