主要的知识点:
集群管理工具使用
gcadmin 用于对集群进行管理和监控,和数据库一起安装,目录在 gcware/bin 目录.
 # 获取帮助$ gcadmin --help
# 版本$gcadmin -V
   复制代码
 1.查看集群状态
gcadmin showcluster [c] [d] [f]
参数说明:
 [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:
监控工具名: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>
参数说明:
 # demo[gbase@localhost ~]$ gcluster_services all infogcware is runninggcluster is runninggcrecover is runninggbase is runningsyncserver is running
   复制代码
 3.数据一致性状态
系统自动恢复: 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 ]
参数:
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]
评论