南大通用GBase 8a 管理命令gcadmin报错GC_AIS_ERR_NOT_EXIST

GBase 8a数据库集群提供了gcadmin的管理命令来获得集群当前状态,如果返回报错信息GC_AIS_ERR_NOT_EXIST,目前已知是数据库服务不是通过gcware启动,而是cocosync启动导致的。

样例截图

现象

如下是一个报 GC_AIS_ERR_NOT_EXIST 的错误样例

[root@862b43 ~]# gcadmin
[gcadmin] Could not initialize CRM instance error: [12]->[GC_AIS_ERR_NOT_EXIST]

原因

服务不是由service gcware启动的,而是service corosync启动的。该问题只出现在V9版本里。V95已经没有使用私有dba用户,没有这个service了。

其次,在corosync进程存在的前提下,执行

pmap `pidof corosync` |grep -E "gcware_clm.lcrso|gcware_crm.lcrso|gcware_lck.lcrso|gcwserviceenable.lcrso"

查看corosync加载的动态链接库中是否包含gcware_clm.lcrso、gcware_crm.lcrso、gcware_lck.lcrso和gcwserviceenable.lcrso等动态库,如所示。如果corosync不包含上面提到的动态链接库,可能是通过service corosync start启动的corosync进程,包含则是正常的。

[root@862b43 ~]# gcadmin
[gcadmin] Could not initialize CRM instance error: [12]->[GC_AIS_ERR_NOT_EXIST]
[root@862b43 ~]# pmap `pidof corosync` |grep -E "gcware_clm.lcrso|gcware_crm.lcrso|gcware_lck.lcrso|gcwserviceenable.lcrso"
[root@862b43 ~]#
[root@862b43 ~]# service gcware start
Starting GCWARE (gcwexec):                                 [  OK  ]
Starting GBASED    :                                       [  OK  ]
Starting GCSYNC :                                          [  OK  ]
Starting GCLUSTERD :                                       [  OK  ]
Starting GCRECOVER :                                       [  OK  ]
Starting GCMonit success!
[root@862b43 ~]#
[root@862b43 ~]# pmap `pidof corosync` |grep -E "gcware_clm.lcrso|gcware_crm.lcrso|gcware_lck.lcrso|gcwserviceenable.lcrso"
00007fc7c2621000    352K r-x-- gcware_clm.lcrso
00007fc7c2679000   2044K ----- gcware_clm.lcrso
00007fc7c2878000      4K r---- gcware_clm.lcrso
00007fc7c2879000      4K rw--- gcware_clm.lcrso
00007fc7c2e0b000    540K r-x-- gcware_crm.lcrso
00007fc7c2e92000   2044K ----- gcware_crm.lcrso
00007fc7c3091000      4K r---- gcware_crm.lcrso
00007fc7c3092000      8K rw--- gcware_crm.lcrso
00007fc7c3095000    464K r-x-- gcware_lck.lcrso
00007fc7c3109000   2044K ----- gcware_lck.lcrso
00007fc7c3308000      4K r---- gcware_lck.lcrso
00007fc7c3309000      8K rw--- gcware_lck.lcrso
00007fc7c4875000    176K r-x-- gcwserviceenable.lcrso
00007fc7c48a1000   2048K ----- gcwserviceenable.lcrso
00007fc7c4aa1000      4K r---- gcwserviceenable.lcrso
00007fc7c4aa2000      4K rw--- gcwserviceenable.lcrso

解决方案

如上样例所示,将corosync服务停掉,然后用service gcware start启动集群。

其它gcadmin报错信息,请参考

GBase 8a 集群故障自助查询-gcadmin类