写点什么

Gbase8a MPP Cluster 集群管理

作者:南渡北归
  • 2021 年 12 月 11 日
  • 本文字数:4490 字

    阅读完需:约 15 分钟

主要的知识点:

  • 集群管理工具

  • 集群状态分析

  • 集群日志信息

  • 分布信息管理


集群管理工具使用

gcadmin 用于对集群进行管理和监控,和数据库一起安装,目录在 gcware/bin 目录.


# 获取帮助$ gcadmin --help
# 版本$gcadmin -V
复制代码

1.查看集群状态

gcadmin showcluster [c] [d] [f]


参数说明:


  • c: 显示节点时候仅显示 coordinator 节点

  • d: 显示节点时仅显示相应的数据节点

  • f: 指明 xml 格式显示信息


[gbase@localhost ~]$ gcadmin showclusterCLUSTER STATE:         ACTIVEVIRTUAL CLUSTER MODE:  NORMAL
==================================================================| GBASE COORDINATOR CLUSTER INFORMATION |==================================================================| NodeName | IpAddress | gcware | gcluster | DataState |------------------------------------------------------------------| coordinator1 | 192.168.176.120 | OPEN | OPEN | 0 |------------------------------------------------------------------| coordinator2 | 192.168.176.121 | OPEN | OPEN | 0 |------------------------------------------------------------------| coordinator3 | 192.168.176.122 | OPEN | OPEN | 0 |------------------------------------------------------------------=========================================================================================================| GBASE DATA CLUSTER INFORMATION |=========================================================================================================| NodeName | IpAddress | DistributionId | gnode | syncserver | DataState |---------------------------------------------------------------------------------------------------------| node1 | 192.168.176.120 | 1 | OPEN | OPEN | 0 |---------------------------------------------------------------------------------------------------------| node2 | 192.168.176.121 | 1 | OPEN | OPEN | 0 |---------------------------------------------------------------------------------------------------------| node3 | 192.168.176.122 | 1 | OPEN | OPEN | 0 |---------------------------------------------------------------------------------------------------------
复制代码

集群工作状态说明(VIRTUAL CLUSTER MODE)

集群工作状态有三种: normal /readonly /recovery


  • normal:正常模式,可以执行常规操作

  • readonly:只读模式,只能进行 sql 查询.不能进行 DDL\DML\Loader 操作.(比如在进行扩容\替换\数据备份时候,进群会有一段时间处于只读模式

  • recovery: 备份恢复模式,一般在执行集群数据恢复或者其他特殊场景使用.该模式下不可进行 SQL 操作.


管理员可以手动切换这些模式:


语法: gcadmin switchmodes ['normal', 'readonly' or 'recovery']

2.模组进程

模组进程也有三种状态: open/close/offline


  • open:模组正常

  • offline:模组进程下线,一般为硬件故障,修复后,重启相关进程即可.

  • close: 模组进程启动失败或意外关闭. (比如端口占用\配置文件错误等.)


模组进程介绍


Coordinator node:

  • gclusterj 进程名: gclusterd

  • gcware 进程名: gcware

  • 自动恢复进程名: gcrevover


DataNode:


  • gnode 进程名:gbased

  • syscserver 进程:gc_syn_server


监控工具名:gcmonit / gcmmoint

模组监控工具

语法:


gcmonit < —start|—stop|—restart|–status[=<prog_name>]|-–help|–version>


gcmmonit < —start|—stop|—restart|–status[=<prog_name>]|-–help|–version>


[gbase@localhost ~]$ gcmonit --status+-------------------------------------------------+|SEG_NAME     PROG_NAME    STATUS    PID     |+-------------------------------------------------+|gcluster     gclusterd    Running    64461     ||gcware       gcware       Running    4255      ||gcrecover    gcrecover    Running    4404      ||gcmmonit     gcmmonit     Running    4601      ||gbase        gbased       Running    64506     ||syncserver    gc_sync_server  Running  4593    |+-------------------------------------------------+
复制代码


Note:


  • gcmmonit 和 gcmonit 实现的功能完全一致,只是检测范围不同

  • gcmmonit 只负责检测 gcmonit 程序的运行情况

  • gcmonit 负责检测各个服务和 gcmmonit 程序的运行情况


当集群中的 coordinator 节点的 Online 个数≤coordinator 节点总数的 1/2 时候,集群为了保证数据安全,相关的 gcware 服务会停用,禁止数据库操作.

模组启停

语法:


​ gcluster_services <gcware|gcluster|gcrecover|gbase|syncserver|all> <start|stop [--force]|restart [--force]|info>


参数说明:


  • force:用于服务无法停止时候,内部用 kill -9 的方式强制停止服务进程

  • info 显示当前进程运行状态


# demo[gbase@localhost ~]$ gcluster_services all infogcware is runninggcluster is runninggcrecover is runninggbase is runningsyncserver is running
复制代码

3.数据一致性状态


  • 0: 主备分片数据一致

  • 1:主备分片数据不一致


系统自动恢复: gcrecover 先恢复 DDL 操作,然后调用同步服务 gc_sync_server 恢复数据.恢复后,系统将状态转为 0. (原理:当某个节点执行命令失败后,数据恢复工具监控到错误日志,然后调用同步工具,自动修复节点数据不一致的情况,确保各节点数据的一致性.)

4.集群日志管理

错误日志

DDL event 日志

在 DDL 语句执行成功的情况下,记录执行过程中出现异常造成主备分片不一致的节点信息


语法:


command shall be: gcadmin showddlevent [<tablename segname nodeip> | <tablename nodeip> | <max_fevent_num>] [f] [vc vc_name]


参数:


  • 表名: 库名.表名

  • 段名: 表分片的名字.

  • 节点 ip

  • 最大返回数:默认返回 16 条,超过部分将不显示


DML event 日志:

在 DML 语句执行成功的情况下,记录造成主备分片不一致的异常节点的信息。

语法:


gcadmin showdmlevent [<tablename segname nodeip> | <max_fevent_num>] [f] [vc vc_name]


参数:和上面的一样

DMLstorageevent 日志:

执行 DML 成功的情况下,记录识别出的数据或元数据文件损坏的异常节点信息。

语法:


gcadmin showdmlstorageevent [[table ID segname nodeip] | <max_fevent_num>] [f] [vc vc_name]


参数:和上面一致

故障日志

Failover 日志:当执行某 SQL 的管理节点出现故障,无法正常完成 SQL 操作时,接管节点将读取记录于 gcware 中的 SQL 执行信息继续执行。该过程就是管理节点的 failover 机制。


gcadmin showfailover


Failover 信息记录的内容:Commit id ,Database 名,Table 名,Scn 号,Type, Create time,State,original node,takeover node,Takeover 接管次数。


显示详细信息:


gcadmin showfailoverdetail <commitid> [ xml_file_name ]


参数:


  • commitid: failover 的唯一标识.

  • xml_file_name:保存 failover 信息的文件名.不输入的话,则输出到屏幕.

5.分布信息管理

  • 也就是对 distribution 表的管理.gcadmin 工具提供对 distribution 表的创建\删除\导出等操作.

  • distribution 表:用于记录分片和节点对应关系的表.

  • 分片的分布规则:

  • 按照模板生成分片备份:

  • pattern 1 (rack 高可用+负载均衡)

  • pattern 2 (节点高可用(

  • 手动指定

  • 自定义模式(需要自己写 xml 分片配置文件)

生成 distribution 表

gcadmin distribution <gcChangeInfo.xml> <p num> [d num] [extension] [pattern 1|2] [db_user user_name] [db_pwd password] [vc vc_name]
复制代码


参数说明:


  • gcChangeInfo.xml: 是描述集群内节点和 rack(机柜)对应关系的文件。

  • p:每个数据节点存放的主分片数量。注:pattern 1 模式下,p 的取值范围为:1<=p<rack 内节点数。

  • d:每个主分片的备份数量,取值为 0,1 或 2。默认值为 1。

  • pattern:描述分片备份规则的模板。1 为 rack 高可用,2 为节点高可用。默认为 1。

导出 distribution:

gcadmin getdistribution <ID> <distribution_info.xml>


#嗯.内容类似这样<?xml version='1.0' encoding="utf-8"?><distributions>    <distribution>        <segments>            <segment>                <primarynode ip="192.168.176.120"/>
<duplicatenodes> <duplicatenode ip="192.168.176.121"/> </duplicatenodes> </segment>
<segment> <primarynode ip="192.168.176.121"/>
<duplicatenodes> <duplicatenode ip="192.168.176.122"/> </duplicatenodes> </segment>
<segment> <primarynode ip="192.168.176.122"/>
<duplicatenodes> <duplicatenode ip="192.168.176.120"/> </duplicatenodes> </segment>
<segment> <primarynode ip="192.168.176.120"/>
<duplicatenodes> <duplicatenode ip="192.168.176.122"/> </duplicatenodes> </segment>
<segment> <primarynode ip="192.168.176.121"/>
<duplicatenodes> <duplicatenode ip="192.168.176.120"/> </duplicatenodes> </segment>
<segment> <primarynode ip="192.168.176.122"/>
<duplicatenodes> <duplicatenode ip="192.168.176.121"/> </duplicatenodes> </segment> </segments> </distribution></distributions>
复制代码

查看 distribution

gcadmin showdistribution [node | f]


  Distribution ID: 1 | State: new | Total segment num: 6
============================================================| nodes |192.168.176.120|192.168.176.121|192.168.176.122|------------------------------------------------------------| primary | 1 | 2 | 3 || segments | 4 | 5 | 6 |------------------------------------------------------------|duplicate | 3 | 1 | 2 ||segments 1| 5 | 6 | 4 |============================================================
复制代码

删除 distribution

gcadmin rmdistribution [ID]

用户头像

南渡北归

关注

还未添加个人签名 2019.09.02 加入

Hello World?

评论

发布
暂无评论
Gbase8a MPP Cluster 集群管理