暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a 学习笔记 006 —— GBase 8a MPP Cluster 集群管理-管理工具

心有阳光 2023-03-01
1280

GBase 8a 学习笔记 006 —— GBase 8a MPP Cluster 集群管理-管理工具

集群管理工具

专门为DBA管理员提供的用于对集群进行管理和监控的工具软件。

随GBase 8a数据库一起安装,部署在gcware/bin目录中。

  • 集群管理
  • VC管理
  • 节点管理
  • 分布信息
  • 日志管理

获取帮助

[gbase@192 ~]$ gcadmin --help Usage: gcadmin <command> [arg1[, arg2...]] 1. gcadmin distribution <gcChangeInfo.xml> <p num> [d num] [extension] [pattern 1|2] [db_user user_name] [db_pwd password] [vc vc_name] : generate distribution, db_user and db_pwd shall input …… [gbase@192 ~]$

gbase8a064.png

查看gcadmin版本

[gbase@192 ~]$ gcadmin -V gcadmin 9.5 build 126693 [gbase@192 ~]$

gbase8a065.png

集群状态管理

查看集群状态

语法:gcadmin showcluster [c] [d] [f]
参数:
c:显示节点时仅显示 coordinator 节点;
d:显示节点时仅显示相应的数据节点;
f:指明按 xml 格式显示信息;

[gbase@192 ~]$ gcadmin CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: NORMAL ================================================================== | GBASE COORDINATOR CLUSTER INFORMATION | ================================================================== | NodeName | IpAddress | gcware | gcluster | DataState | ------------------------------------------------------------------ | coordinator1 | 192.168.254.138 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator2 | 192.168.254.139 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator3 | 192.168.254.140 | OPEN | OPEN | 0 | ------------------------------------------------------------------ ========================================================================================================= | GBASE DATA CLUSTER INFORMATION | ========================================================================================================= | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | --------------------------------------------------------------------------------------------------------- | node1 | 192.168.254.138 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node2 | 192.168.254.139 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node3 | 192.168.254.140 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- [gbase@192 ~]$

gbase8a066.png

按 xml 格式显示信息

[gbase@192 ~]$ gcadmin showcluster f <?xml version='1.0' encoding="utf-8"?> <ClusterInfo> <CoordinatorClusterState>ACTIVE</CoordinatorClusterState> <VirtualClusterMode>NORMAL</VirtualClusterMode> <CoordinatorNodes> <CoordinatorNode> <NodeName>coordinator1</NodeName> <IpAddress>192.168.254.138</IpAddress> <gcware>OPEN</gcware> <gcluster>OPEN</gcluster> <DataState>0</DataState> </CoordinatorNode> <CoordinatorNode> <NodeName>coordinator2</NodeName> <IpAddress>192.168.254.139</IpAddress> <gcware>OPEN</gcware> <gcluster>OPEN</gcluster> <DataState>0</DataState> </CoordinatorNode> <CoordinatorNode> <NodeName>coordinator3</NodeName> <IpAddress>192.168.254.140</IpAddress> <gcware>OPEN</gcware> <gcluster>OPEN</gcluster> <DataState>0</DataState> </CoordinatorNode> </CoordinatorNodes> <DataserverNodes> <DataServerNode> <NodeName>node1</NodeName> <IpAddress>192.168.254.138</IpAddress> <DistributionId>1</DistributionId> <gnode>OPEN</gnode> <syncserver>OPEN</syncserver> <DataState>0</DataState> </DataServerNode> <DataServerNode> <NodeName>node2</NodeName> <IpAddress>192.168.254.139</IpAddress> <DistributionId>1</DistributionId> <gnode>OPEN</gnode> <syncserver>OPEN</syncserver> <DataState>0</DataState> </DataServerNode> <DataServerNode> <NodeName>node3</NodeName> <IpAddress>192.168.254.140</IpAddress> <DistributionId>1</DistributionId> <gnode>OPEN</gnode> <syncserver>OPEN</syncserver> <DataState>0</DataState> </DataServerNode> </DataserverNodes> </ClusterInfo> [gbase@192 ~]$

gbase8a071.png

showcluster方式

[gbase@192 ~]$ gcadmin showcluster CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: NORMAL ================================================================== | GBASE COORDINATOR CLUSTER INFORMATION | ================================================================== | NodeName | IpAddress | gcware | gcluster | DataState | ------------------------------------------------------------------ | coordinator1 | 192.168.254.138 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator2 | 192.168.254.139 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator3 | 192.168.254.140 | OPEN | OPEN | 0 | ------------------------------------------------------------------ ========================================================================================================= | GBASE DATA CLUSTER INFORMATION | ========================================================================================================= | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | --------------------------------------------------------------------------------------------------------- | node1 | 192.168.254.138 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node2 | 192.168.254.139 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node3 | 192.168.254.140 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- [gbase@192 ~]$

gbase8a072.png

  • 集群工作状态 :ACTIVE
    • Active:表示集群工作正常。
    • 当集群中coordinator 节点的Online个数小于或等于coordinator节点总数的1/2 时,集群为了保障数据安全,相关的gcware服务会停用。此时不能执行任何数据库操作。
  • 集群模式:normal/readonly/recovery
    • Normal模式: 集群正常模式,能执行所有SQL操作。
    • Readonly模式: 只读模式,只能执行SQL查询操作,不能执行DDL/DML/Loader操作。在执行扩容、替换或数据备份操作时集群会在一段时间内处于只读模式。
    • Recovery模式: 备份恢复模式,一般在执行集群数据恢复或特定场景时,使用该模式。该模式下,不允许进行任何SQL操作。
    • 管理员可以手动切换模式
  • 模组进程状态:open / close / offline
    • Open状态:模组工作状态正常。
    • Offline状态:模组进程下线,一般为硬件故障,可排查设备是否突然断电或断网等。修复故障后,需重启相关进程。
    • Close状态:模组进程启动失败或意外关闭等。常见原因如:端口被占用,配置文件权限和参数错误等。须查看相关日志查找原因并重启相关进程。
  • 模组进程
    • Coordinator node
      • gcluster进程名:gclusterd
      • gcware进程名: gcware
      • 自动恢复进程名:gcrecover
    • Data node
      • gnode进程名:gbased
      • syncserver进程名:gc_sync_server
    • 监控工具名:gcmonit / gcmmonit
  • 数据一致性状态:0 / 1
    • 0 : 主备分片数据一致
    • 1:主备分片数据不一致
    • 系统自动恢复:
      • gcrecover 先恢复 DDL 操作,然后调用同步服务 gc_sync_server 恢复数据。
      • 恢复后,系统自动将 1 转换为 0。
    • 自动恢复原理:
      • 当某个节点执行命令失败后,数据恢复工具可监控到错误日志,然后调用同步工具,自动修复节点数据不一致的情况,确保各节点数据的一致性。

切换集群模式

gcadmin switchmode <mode>
[gbase@192 ~]$ gcadmin switchmode readonly ========== switch cluster mode... switch pre mode: [NORMAL] switch mode to [READONLY] switch after mode: [READONLY] [gbase@192 ~]$ gcadmin showcluster CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: READONLY ================================================================== | GBASE COORDINATOR CLUSTER INFORMATION | ================================================================== | NodeName | IpAddress | gcware | gcluster | DataState | ------------------------------------------------------------------ | coordinator1 | 192.168.254.138 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator2 | 192.168.254.139 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator3 | 192.168.254.140 | OPEN | OPEN | 0 | ------------------------------------------------------------------ ========================================================================================================= | GBASE DATA CLUSTER INFORMATION | ========================================================================================================= | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | --------------------------------------------------------------------------------------------------------- | node1 | 192.168.254.138 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node2 | 192.168.254.139 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node3 | 192.168.254.140 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- [gbase@192 ~]$

gbase8a073.png

查看集群服务

[gbase@192 ~]$ gcluster_services all info gcware is running gcluster is running gcrecover is running gbase is running syncserver is running [gbase@192 ~]$

GBase 8a MPP Cluster 数据库客户端

停止集群服务

[gbase@192 ~]$ gcluster_services all stop Stopping GCMonit success! Stopping gcrecover : [ OK ] Stopping gcluster : [ OK ] Stopping gcware : [ OK ] Stopping gbase : [ OK ] Stopping syncserver : [ OK ] [gbase@192 ~]$

gbase8a068.png

在另一个节点(139)上使用gcadmin查看集群状态

[gbase@192 ~]$ gcadmin CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: NORMAL ================================================================== | GBASE COORDINATOR CLUSTER INFORMATION | ================================================================== | NodeName | IpAddress | gcware | gcluster | DataState | ------------------------------------------------------------------ | coordinator1 | 192.168.254.138 | CLOSE | CLOSE | 0 | ------------------------------------------------------------------ | coordinator2 | 192.168.254.139 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator3 | 192.168.254.140 | OPEN | OPEN | 0 | ------------------------------------------------------------------ ========================================================================================================= | GBASE DATA CLUSTER INFORMATION | ========================================================================================================= | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | --------------------------------------------------------------------------------------------------------- | node1 | 192.168.254.138 | 1 | CLOSE | CLOSE | 0 | --------------------------------------------------------------------------------------------------------- | node2 | 192.168.254.139 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node3 | 192.168.254.140 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- [gbase@192 ~]$

gbase8a069.png

开启管理节点所有集群服务

[gbase@192 ~]$ gcadmin CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: NORMAL ================================================================== | GBASE COORDINATOR CLUSTER INFORMATION | ================================================================== | NodeName | IpAddress | gcware | gcluster | DataState | ------------------------------------------------------------------ | coordinator1 | 192.168.254.138 | CLOSE | CLOSE | 0 | ------------------------------------------------------------------ | coordinator2 | 192.168.254.139 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator3 | 192.168.254.140 | OPEN | OPEN | 0 | ------------------------------------------------------------------ ========================================================================================================= | GBASE DATA CLUSTER INFORMATION | ========================================================================================================= | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | --------------------------------------------------------------------------------------------------------- | node1 | 192.168.254.138 | 1 | CLOSE | CLOSE | 0 | --------------------------------------------------------------------------------------------------------- | node2 | 192.168.254.139 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node3 | 192.168.254.140 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- # 开启管理节点所有集群服务 [gbase@192 ~]$ gcluster_services all start Starting gcware : [ OK ] Starting gcluster : [ OK ] Starting gcrecover : [ OK ] Starting gbase : [ OK ] Starting syncserver : [ OK ] Starting GCMonit success! # 集群状态恢复正常 [gbase@192 ~]$ gcadmin CLUSTER STATE: ACTIVE VIRTUAL CLUSTER MODE: NORMAL ================================================================== | GBASE COORDINATOR CLUSTER INFORMATION | ================================================================== | NodeName | IpAddress | gcware | gcluster | DataState | ------------------------------------------------------------------ | coordinator1 | 192.168.254.138 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator2 | 192.168.254.139 | OPEN | OPEN | 0 | ------------------------------------------------------------------ | coordinator3 | 192.168.254.140 | OPEN | OPEN | 0 | ------------------------------------------------------------------ ========================================================================================================= | GBASE DATA CLUSTER INFORMATION | ========================================================================================================= | NodeName | IpAddress | DistributionId | gnode | syncserver | DataState | --------------------------------------------------------------------------------------------------------- | node1 | 192.168.254.138 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node2 | 192.168.254.139 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- | node3 | 192.168.254.140 | 1 | OPEN | OPEN | 0 | --------------------------------------------------------------------------------------------------------- [gbase@192 ~]$

gbase8a070.png

模组监控工具

语法: gcmonit <–start|–stop|–restart|–status[=<prog_name>]|–help|–version>
注:gcmmonit 与 gcmonit 实现的功能完全一致,只是它们的监测范围不同。
gcmonit负责监测 GBase 8a MPP Cluster 各个服务程序和 gcmmonit 程序的运行状况;
gcmmonit 只负责监测 gcmonit 程序的运行状况。
语法:gcmmonit <–start|–stop|–restart|–help|–version>

[gbase@192 ~]$ gcmonit --status +--------------------------------------------------------------------------------+ |SEG_NAME PROG_NAME STATUS PID | +--------------------------------------------------------------------------------+ |gcluster gclusterd Running 4137 | |gcware gcware Running 4132 | |gcrecover gcrecover Running 4166 | |gcmmonit gcmmonit Running 4774 | |gbase gbased Running 4227 | |syncserver gc_sync_server Running 4251 | +--------------------------------------------------------------------------------+ [gbase@192 ~]$

gbase8a074.png

模组启停工具

语法:
gcluster_services <gbase|gcluster|gcrecover|syncserver|all> <start|stop[–force] | restart [–force]|info>
参数说明:
• force:用于服务无法停止时,内部用 kill -9 即 kill -KILL 的方式强制停止服务进程。
• info:显示进程当前运行状态。

集群日志信息

DDL event日志

在DDL语句执行成功的情况下,记录执行过程中出现异常造成主备分片不一致的节点信息。
语法: gcadmin showddlevent [<表名 段名 节点IP>|<最大返回数>]
参数说明:
表名: 格式为库名.表名
段名: 表分片的名字,例如建立一张分布表,在第一个节点上的表分片名就是n1,在第二个节点上的表分片名就是n2,……,依此类推。
节点IP: 节点机器的IP
最大返回数:默认返回16 条,超过部分将不显示。

DML event日志

在DML语句执行成功的情况下,记录造成主备分片不一致的异常节点的信息。
语法: gcadmin showdmlevent [<表名 段名 节点IP>|<最大返回数>]
参数说明:
表名: 格式为库名.表名
段名: 表分片的名字,例如建立一张分布表,在第一个节点上的表分片名就是n1,在第二个节点上的表分片名就是n2,……,依此类推。
节点IP: 节点机器的IP
最大返回数:默认返回16 条,超过部分将不显示。

DMLstorageevent 日志

执行DML成功的情况下,记录识别出的数据或元数据文件损坏的异常节点信息。
语法: gcadmin showdmlstorageevent [<表名 段名 节点IP>|<最大返回数>]
参数说明:
表名: 格式为库名.表名
段名: 表分片的名字,例如建立一张分布表,在第一个节点上的表分片名就是n1,在第二个节点上的表分片名就是n2,……,依此类推。
节点IP: 节点机器的IP
最大返回数:默认返回16 条,超过部分将不显示。

Failover 日志

当执行某SQL的管理节点出现故障,无法正常完成SQL操作时,接管节点将读取记录于gcware中的SQL执行信息继续执行。该过程就是管理节点的failover机制。
语法:gcadmin showfailover
Failover 信息记录的内容:
Commit id ,Database 名,Table名,Scn 号,Type, Create time,State,original node,takeover node,Takeover 接管次数。

$ gcadmin showfailover +=========================================================================================+ | GCLUSTER FAILOVER | +=========================================================================================+ +------------+------------+-----------+------------+-----------+------------------+-------+-----------------+--- --------------+------------------+ | commit id | database | table | scn | type | create time | state | original node | takeover node | takeover number| +------------+------------+-----------+------------+-----------+------------------+-------+-----------------+--- --------------+------------------+ | 1 | test | t1 | 1 | ddl | 20161019101114| 5 | 192.168.153.130| 0.0.0.0 | 0 | +------------+------------+-----------+------------+-----------+------------------+-------+-----------------+--- --------------+------------------+
  • 显示说明
    • commit id: failover 的唯一标识,64 位数字。
    • database: 数据库名。
    • table: 表名。
    • scn: scn 号。
    • type: ddl/dml/rebalance。
    • create time: 当前节点创建 failover 的时间。
    • original node: 发起节点。
    • takeover node:当前接管节点,如果没有发生接管则显示为0.0.0.0。
    • takeover num:failover的接管次数,gcware通知gcluster接管后这个值就加1。
    • state: failover 对应的状态当前如下:
      • init:初始化,对应显示数字 0
      • add_res : 添加集群锁,对应显示数字 1
      • set_info : 设置 failover 信息,对应显示数字 2
      • set_status: 设置分片状态,对应显示数字 3
      • set_rebalance_info:设置 rebalance 信息,对应显示数字 4
      • set_rebalance_status:设置 rebalance 状态,对应显示数字 5

显示详细信息

语法: gcadmin showfailoverdetail [ xml_file_name ]
参数:
Commitid:failover 的唯一标识,该参数必须输入。同gcadmin showfailover的Commitid;
Xml_fil_name:保存 failover 信息的文件名,可选,若不输入则将failover 信息打印到屏幕;
增加的内容:
content: failover 完整信息,最大 256k。
status: failover 操作的对象状态即对应的是哪个节点哪个分片的状态。例如 node1.n1 init 含义就是 node1 节点上 n1 分片尚未提交处于初始化状态。
rebalance_information:rebalance 独有信息( 含distribution_id, current_scn, current_step, 中间表名),ddl dml 显示为空标签。
sdm: 仅用于rebanlance,由如下字段联接而成:
NodeId.Suffix : 某个节点的某个分片;
curRowid:rebalance 执行到哪一行了;
Blockid BlockNum:上一批rebalance执行到哪一行;

分布信息管理

即对distribution表的管理。gcadmin工具提供对distribution表的创建、删除和导出等操作。

distribution表

是用于记录分片和节点对映关系的表。
注:通过指定不同的分片备份规则,distribution表可协助集群实现节点数据的高可用及数据访问的负载均衡。

  • 分片的分布规则
    • 按照模板生成分片并备份
      • pattern 1 (rack高可用+负载均衡)
      • pattern 2 (节点高可用)
    • 手动指定
      • 自定义模式(需编写xml分片配置文件,自定义高可用方案)

生成distribution表

语法:

gcadmin distribution <gcChangeInfo.xml> <p number> [d number] [pattern 1|2]
  • 参数说明
    • gcChangeInfo.xml: 是描述集群内节点和rack(机柜)对应关系的文件。
    • p:每个数据节点存放的主分片数量。注:pattern 1模式下,p的取值范围为:1<=p<rack内节点数。
    • d:每个主分片的备份数量,取值为0,1 或2。默认值为1。
    • pattern:描述分片备份规则的模板。1 为rack高可用,2 为节点高可用。默认为 1。

多rack:

gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1 # 注:集群安装时所有数据节点默认在同一rack内。划分多rack时,需修改gcChangeInfo.xml文件。

负载均衡:(默认)

gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1 # 注:集群安装时所有数据节点默认在同一rack内,无需修改gcChangeInfo.xml文件。

节点高可用

gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 2 # 注:因pattern2模式没有rack概念,所以gcChangeInfo.xml文件中的rack不起作用,无需修改。

导出distribution

功能:
将指定 ID 的 distribution 信息保存在指定的文件中,生成的文件为 xml 文件,用户可修改文件中的分片信息,然后使用该文件重新生成 distribution。

语法:
gcadmin getdistribution <distribution_info.xml>

参数说明:

**ID:**要获取的 distribution id。

**distribution_info.xml:**保存 distribution 信息的文件名。

查看distribution

**语法:**gcadmin showdistribution [node | f]

参数说明:

**node:**按节点为单位,显示各节点分片

**f:**以xml文件格式显示

删除distribution

从集群中删除指定 id 的 distribution。若不输入 distribution id,则默认删除旧的 distribution,集群中只有一个 distribution 时则默认删除该 distribution。

语法: gcadmin rmdistribution [ID]

  • 若distribution 为正在使用,则无法删除该 distribution。需先在数据库中执行refreshnodedatamap drop 操作才可删除;
  • 若 distribution 中有 fevent log 需先清除才可删除该 distribution;
  • 删除 distribution 时,需要先确认所有的 GCluster 节点服务正常,若有 GCluster 节点服务不正常,会导致删除 distribution 后产生无法恢复的 fevent log。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论