集群管理工具
/gcware/bin/gcadmin
- 集群管理:集群状态、集群模式、帮助、版本
- VC管理:创建VC/删除VC/启停VC/导入VC
- 节点管理:添加节点、删除节点、替换节点、设置节点
- 分布信息:创建分布表、删除分布表、查看分布表、导出分布表
- 日志管理:DDL/DML/feventlog/failover
gcadmin --help
gcadmin -V
gcadmin
gcadmin showcluster c d f
gcadmin
集群状态管理
集群状态
ACTIVE 正常状态。当coordinator节点1/2以上故障时,gcware服务停用,状态异常。
集群模式
NORMAL 正常模式
READONLY 扩容,替换,数据备份时集群会有一段时间只读。
Recovery 数据恢复等特殊场景,该模式不能执行任何SQL操作
集群模式切换
gcadmin switchmode readonly
模组进程状态
- open: 正常状态
- offline: 一般为硬件故障,修复后需重启相关进程
- close: 启动失败或意外关闭。需查看日志修复后重启相关进程
模组进程
Coordinator Node
gcware 数据共享和同步
gclusterd SQL解析,优化,生成执行计划,下发SQL给DataNode
gcrecover 数据不一致下的修复
Data Cluster
gnode:gbased 数据本地计算和存取
syncserver:gc_sync_server 数据同步和一致性检查.gcware发现数据不同步,通知sync执行同步
监控
gcmonit 监控集群各进程且监控gcmmonit进程,并负责对应进程故障下的拉起
gcmmonit 只监控gcmonit进程,并负责故障下拉起
gcmonit --start/stop/restart/status/help/version
启停进程
gcluster_servics all/xxx start/stop/restart
数据一致性
DataState
0 主备分片数据一致
1 主备分片数据不一致。gcware先恢复DDL操作,然后调用gc_sync_recover恢复数据,恢复后自动转换状态为0.
自动恢复原理:某节点执行命令失败后,gcware会监控错误日志,然后调用同步工具自动修复节点数据不一致的情况。
集群日志信息
DDL/DML Event:DDL/DML执行成功情况下,记录执行过程中造成主备分片不一致的节点信息
gcadmin showddlevent [<表名 段明 节点IP> | 最大返回数 ] (默认返回16条)
gcadmin showdmlevent [<表名 段明 节点IP> | 最大返回数 ] (默认返回16条)
DMLstorageevent DML执行成功情况下,记录识别出的数据或元数据文件损坏的异常节点信息
gcadmin showdmlstorageevent [<表名 段明 节点IP> | 最大返回数 ] (默认返回16条)
状态不显示同步SCN号,出现该错误说明节点出现比较严重数据不一致,修复需要通过copy文件的方式处理
管理节点主要维护数据库的元数据
Failover日志
管理节点执行SQL时故障,接管节点会读取gcware中的SQL执行信息继续执行。该过程就是管理节点的failover机制
gcadmin showfailover
gcadmin showfailoverdetail <commitid> [xml_file_name] 显示详细信息并输出到文件
- state
0. 初始化
1. add_res,添加集群锁
2. set_info 设置failover信息
3. set_status 设置分片状态
4. set_rebalance_info
5. set_rebalance_status
- takeover node
不发生接管时显示 0.0.0.0
- takeover number
failover接管次数,gcware通过gcluster结果后+1
分布信息管理
distribution表,用于记录节点和分片的对应关系的表
pattern 1 机架高可用
pattern 2 节点高可用
pattern 手动创建分规则,修改gcChangeInfo.xml文件。
节点内分片数要小于机架内的节点数
gcadmin distribution gcChangeInfo.xml 生成案例分片规则
gcadmin getdistribution <ID> <distribution_info.xml> 导出分布表
gcadmin showdistribution [node | f] 查看分布表。node以节点为单位,f以xml文件显示。
gcadmin rmdistribution [id] 删除分布表
- 正在使用则无法删除,需先refreshnodedatamap drop <ID>才可删除
- 有fevent log,需先清除才可删除
- 删除时,需确认所有GCluster节点正常。否则删除后会产生不可恢复的fevent log