目录导航
报错原因
数据的主备分片都处于故障状态(event标志),或者分片所在主备节点都处于不可用状态(OFFLINE或服务CLOSE)等,特别是单节点集群。可以通过gcadmin showdmlevent 查看到。
故障原因
一般是硬件故障触发,比如磁盘,网络,当出现意外断电,宕机,磁盘空间满等情况,会导致如上主备分片同时被设置event标识的情况。
解决方法
先确认集群gcadmin是否正常,如果有CLOSE和OFFLINE情况,先解决。
如果gcadmin看节点和服务正常,则检查数据是否有故障。
gcadmin showdmlevent 查看对应的表。 如果版本支持,可以用下面这个
[gbase@localhost ~]$ gcadmin showdmlevent testdb.t1 n1 10.0.2.107
Event count:0
参数是 gcadmin --help可以看到,如果有如下的信息即可使用
gcadmin showdmlevent [<tablename segname nodeip> | <max_fevent_num>] [f]
testdb.t1 库名.表名
n1 分片,对应segname
10.0.2.107 对应nodeip
8. gcadmin showddlevent [<tablename segname nodeip> | <tablename nodeip> | <max_fevent_num>] [f] : show cluster ddl fail event,
replicated table segname is [n0]
9. gcadmin showdmlevent [<tablename segname nodeip> | <max_fevent_num>] [f] : show current cluster dml fail event, replicated table segname is [n0]
10. gcadmin showdmlstorageevent [table ID segname nodeip] | <max_fevent_num>] [f]
如果是单节点集群,【只能】清理掉event,无论是否损坏。
如果是多节点,需要人工排查该分片在不同节点上的完整度,比如通过
select * from XXX_nY where rowid%65536=0 判断数据是否正常。报错的分片肯定被抛弃。
select count(*) 查看行数,一般选择行数多的;
select max(XXXtime) 查看最新数据时间,一般选择时间更近的;
然后选择其中一个为正确的,清掉event后,人工进行同步。 请参考
《南大通用GBase 8a集群报错 Failed to get metadata: DETAIL: check nodes, no valid node for suffix》有1条评论
评论已关闭。