原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
概述
gcadmin是专为DBA管理员提供的用于操作和管理数据库集群的Linux命令工具,通过gcadmin [参数1[, 参数2...]]命令,实现集群管理、VC管理、节点管理、分布信息管理、同步日志管理等功能。
本文对GBase 8a集群管理工具的主要功能和用法进行详细介绍,帮助用户掌握集群管理工具的基本使用方法,并了解集群管理工具的应用场景。
集群管理
集群状态
Gbase 8a支持使用集群管理工具查看集群状态,显示当前集群所有VC的name、ID、distribution、备注、coordinator node 和 data node 等信息。
语法:
gcadmin showcluster [c | vc vcname] [d] [g] [f]
参数:
- c:显示节点时仅显示 coordinator 节点;
- vc_name:指明要显示的VC name,只能指定一个VC,若不指定VC则显示全部VC信息。
- d:显示节点时仅显示相应的数据节点,即不指定VC时显示VC的free node,指定vc时显示该vc的数据节点;
- f:指明按xml格式显示信息;
注意:
- 在多VC模式下,只有执行gcadmin showcluster vc才能显示对应VC的CLUSTER MODE信息。不指定VC则不显示CLUSTER MODE;
- 在兼容模式下,则无此要求。
通过查看集群状态命令,可查看以下信息:
1、集群工作状态:ACTIVE
集群ACTIVE状态为集群正常状态;
当集群中coordinator 节点的Online个数小于或等于coordinator节点总数的1/2 时,集群为了保护数据安全,相关的gcware服务会停用。此时不能执行任何数据库操作。
2、集群模式:NORMAL / READONLY / RECOVERY
-
Normal模式:
集群正常模式,能执行所有SQL操作。 -
Readonly模式:
只读模式,在执行扩容、替换或数据备份操作时集群会处于只读模式。
能执行DDL/DML/DQL操作,DDL/DML操作会等待模式恢复后自动执行。 -
Recovery模式:
备份恢复模式,一般在执行集群数据恢复或特定场景时,使用该模式。
该模式下,不允许进行任何DDL/DML/DQL操作。注意:
只有在查看具体集群时才会显示“集群模式”。
管理员可以根据需要手动切换“集群模式”。
3、模组进程状态:OPEN / OFFLINE / CLOSE / Failure / Unavailable
- Open状态:模组工作状态正常。
- Offline状态:模组进程下线,一般为硬件故障,可排查设备是否突然断电或断网等。
- Close状态:模组进程启动失败或意外关闭等。常见原因如:端口被占用,配置文件权限和参数错误等。须查看相关日志查找原因并重启相关进程。
- Failure代表节点被标识为故障,这时dml、ddl不会下发到该节点,而是直接记录eventlog;
- Unavailable代表节点被标识为不可用,必须进行节点替换才可恢复状态。
支持查看模组进程状态命令:
- gcluster_services all info
- gcware_services all info
支持集群服务进程状态管理:
- gcluster_services <gcluster|gcrecover|gbase|syncserver|gbase_ip|syncserver_ip|all> <start|stop [--force]|restart [--force]|info>
- gcware_services <gcware|all> <start|stop [--force]|restart [--force]|info>
参数:
force:用于服务无法停止时,内部用 kill -9 即 kill -KILL 的方式强制停止服务进程。
info:显示进程当前运行状态。
4、数据一致性状态:0/1
参数:
- 0:数据一致性正常
- 1:数据不一致(执行DDL/DML/loader失败导致)
集群模式
Gbase 8a支持使用集群管理工具切换集群模式。
语法:
gcadmin switchmode [ vc vc_name ]
Mode:[NORMAL]、[READONLY]、[READONLY]
日志管理
1、DDL&DDLEVENT执行机制
DDL主要恢复元数据,恢复完成后由gcrecover告知gcware,在gcware中删除该DDLEVENT。
查看DDLevent错误日志:
语法:
gcadmin showddlevent [<表名 段名 节点IP>|<最大返回数>]
参数:
- 表名:格式为库名.表名
- 段名:表分片的名字,例如建立一张表名为t 的分布表,在第一个节点上的表分片名称就是n1,在第二个节点上的表分片名称就是n2,……,命名以此类推。
- 节点IP:节点机器的IP
- 最大返回数:如不指定最大条数,则默认返回16 条,后续event将不显示。
2、DML&DMLEVENT执行机制
DML主要恢复用户数据,恢复完成后由gcrecover告知gcware,在gcware中删除该DMLEVENT
语法:
gcadmin showdmlevent [<表名 段名 节点IP>|<最大返回数>]
参数:
表名:格式为库名.表名
段名:表分片的名字,例如建立一张表名为t 的分布表,在第一个节点上的表分片名称就是n1,在第二个节点上的表分片名称就是n2,……,命名以此类推。
节点IP:节点机器的IP
最大返回数:如不指定最大条数,则默认返回16 条,后续event将不显示。
3、DMLSTORAGEEVENT执行机制
如果一个分片出现物理损坏或丢失就会转变为STORAGEEVENT 。GBase 8a会先设置一个dmlevent,尝试修复,如果因存储类故障无法修复,比如表不存在,元数据不可读等,则会自动升级到dmlstorageevent。STORAGEEVENT的恢复过程是先走DDLEVENT的恢复,然后走DMLEVENT的恢复。
语法:
gcadmin showdmlevent [<表名 段名 节点IP>|<最大返回数>]
参数:
表名:格式为库名.表名
段名:表分片的名字,例如建立一张表名为t 的分布表,在第一个节点上的表分片名称就是n1,在第二个节点上的表分片名称就是n2,……,命名以此类推。
节点IP:节点机器的IP
最大返回数:如不指定最大条数,则默认返回16 条,后续event将不显示。
4、删除fevent日志
执行节点替换操作前,使用该命令将已被设置为 unavailable 状态的被替换节点的所有 fevent log删除(DDL fevent log、DML fevent log、DMLStorage fevent log)。
语法:
gcadmin rmfeventlog
参数:
- IP: 要设置状态的节点ip。
注意:
慎重使用,非节点替换操作请勿使用。
5、FAILOVER机制
当执行某SQL的管理节点出现故障,无法正常完成SQL操作时,接管节点将读取记录于gcware中的SQL执行信息继续执行。该过程就是管理节点的failover机制。
显示Failover 信息:gcadmin showfailover
Failover 信息记录的内容:Commit id ,Database 名,Table名,Scn 号,Type, Create time,State,original node,takeover node,Takeover 接管次数。
发生offline的gcluster上正在执行的所有的DDL、DML(增删改)操作,gcware会让正常可用的gcluster来依次领取并接管,每次每个gcluster领取一条failover接管,接管了failover的gcluster们同时并行执行,failover的sql执行成功并提交后在gcware中被删除。
2.4集群锁
做写操作时(DDL/DML/Loader),先申请到该表的集群锁才能做写操作,操作完成,释放锁。
查看集群中存在的锁:gcadmin showlock [f]
可选参数 f,按 xml 格式显示锁信息。
参数:
- Lock name: 库名.表名.锁名
- Owner: 锁的拥有者IP
- content: 锁的备注
- create time: 上锁时间
- Locked: True/False
- type:共享锁/独占锁
其它
- 查看正在运行的线程:show processlist
- KILL线程:KILL [CONNECTION | QUERY] thread_id
CONNECTION: 缺省,用于终止指定的 thread_id 线程。
QUERY: 中止当前执行的语句,但是不终止该连接本身。
VC管理
1、创建VC
语法:
gcadmin createvc <create_vc.xml | e example_file_name>
参数:
- create_vc.xml:创建vc时使用的配置文件,包含data node ip、vc name和comment信息。
- e example_file_name:生成样例配置文件,使用该参数时将不会生成vc。
注意:
- 创建VC前,需确保集群运行正常;
- root cluster 中存在free data node;
- 多个VC间不能共享GNODE节点。
2、删除VC
语法:
gcadmin rmvc <vc_name>
注意:
-
删除vc前应先将该vc的资源管理信息手工delete删除,信息存放在gbase库中。否则无法删除vc;
-
以下为gbase库内资源管理对应的表:
consumer_group,consumer_group,consumer_group_user,resource_plan, resource_pool,resource_plan_directive,resource_config,resource_pool_events, cluster_resource_pool_usage_history;
3、启动VC
语法:
gcadmin startvc <vc_name1 vc_name2 ...> <os_dba_user_name os_dba_password>
注意:
一次可同时启动多个虚拟集群,需使用 demo.options 中填写的 dbaUser 用户执行命令,执行命令时需指定 VC name
4、停止VC
语法:
gcadmin stopvc <vc_name1 vc_name2 ...> <os_dba_user_name os_dba_password>
一次可停止多个虚拟集群,执行命令时需指定 VC name,需使用 demo.options 中填写的 dbaUser 用户执行命令。
5、引入VC
将另一集群引入到当前集群,为当前集群增加了一个新VC和若干个物理节点,统一管理。
语法:
gcadmin importvc [e] <config_file_name>
参数:
- config_file_name:导入 vc 的命令配置文件
- e example_file_name:生成样例配置文件,使用该参数时将不执行导入。
注意:
- 被导入的集群必须是虚拟集群版本,并且一次只能导入一个 VC。
- 原集群中的coordinator 和 data 混合节点变为当前集群的data node,所有 data 节点加入新 VC 中,生成与原集群相同的分片分布信息--distribution。
- 原集群中的纯 coordinator node 将不被导入到 root cluster 中。
原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。