什么是event?
如主备节点出现不一致,或者数据读取故障,则设置该表的这个分片状态为1即产生了event。根据不同的错误类型,分为
dmlevent 数据内容不一致
ddlevent 元数据不一致,或者表结构不一致
dmlstorageevent 数据存储异常,一般是磁盘物理损坏或者数据文件checksum错误。
这些event,由系统的gcrecover进行处理,绝大部分event可以由集群内部自动恢复,部分特殊场景下,比如单节点集群、节点磁盘损坏等,可以通过手工命令强行清理。
如何查看event?
通过集群管理命令
gcadmin showdmlevent、gcadmin showddlevent、gcadmin showdmlstorageevent对不同类别的event进行查看
数据文件不一致,一般是磁盘故障,断电宕机等导致文件损坏。
gcadmin showdmlstorageevent [table_ID segname nodeip] |] [f] [vc vc_name]
DDL不一致,部分节点DDL操作时发生故障。。
gcadmin showddlevent [<[[vc_name.]database_name.]table_name segname nodeip> | <[[vc_name.]database_name.tablename nodeip> |] [f] [vc vc_name]
数据不一致,部分节点做DML操作时发生故障,包括LOAD。
gcadmin showdmlevent [<[[vc_name.]database_name.]tablename segname nodeip> |] [f] [vc vc_name]
| 参数名称 | 说明 |
| vc_name | 虚拟集群名。 |
| database_name | 数据库名。 |
| table_name | 表名。 |
| segname | 表分片的名字,例如建立一张表名为 t 的分布表,在第一个,节点上的表分片名称就是 n1,在第二个节点上的表分片名称,就是 n2,……,命名以此类推。 |
| nodeip | 数据节点机器的 IP。 |
| max_fevent_num gcadmin | 根据用户设定的最大条数返回 event log 信息,如果设定的最大条数大于已有的信息总量,则返回全部信息,否则返回指定数量的信息。如不指定最大条数,则默认返回16 条,后续 feven logt 将不显示。 |
| f | 以 xml 格式显示查询信息。 |
| vc vc_name | 指定要显示 event 的 vc 名称。 |
示例
[gbase@DB01 gcluster]$ gcadmin showdmlevent Event ID: 252 ****** Event编号,递增的。 TableName: mydb.table1 ******代表table1有故障******* Fail Data Copy: ------------------------------------------------------ SegName: n2 SCN: 8314414 NodeIP: 11.0.0.201 FAILURE *********代表201节点上的n2分片损坏,需要从202获取数据********** SegName: n6 SCN: 8314414 NodeIP: 11.0.0.206 FAILURE *********代表206节点上的n6分片损坏,需要从205获取数据********** SegName: n1 SCN: 8314436 NodeIP: 11.0.0.201 FAILURE *********代表201节点上的n1分片损坏,需要从202获取数据********** Event ID: 246 TableName: mydb.table2 ******代表table2有故障******* Fail Data Copy: ------------------------------------------------------ SegName: n1 SCN: 8314439 NodeIP: 11.0.0.202 FAILURE *********代表202节点上的n1分片损坏,需要从201获取数据********** Event ID: 245 TableName: mydb.table3 Fail Data Copy: ------------------------------------------------------



