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 ~]$
查看gcadmin版本
[gbase@192 ~]$ gcadmin -V gcadmin 9.5 build 126693 [gbase@192 ~]$
集群状态管理
查看集群状态
语法: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 ~]$
按 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 ~]$
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 ~]$
- 集群工作状态 :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
- Coordinator node
- 数据一致性状态: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 ~]$
查看集群服务
[gbase@192 ~]$ gcluster_services all info gcware is running gcluster is running gcrecover is running gbase is running syncserver is running [gbase@192 ~]$
停止集群服务
[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 ~]$
在另一个节点(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 ~]$
开启管理节点所有集群服务
[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 ~]$
模组监控工具
语法: 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 ~]$
模组启停工具
语法:
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
参数说明:
**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。