南大通用GBase 8a手工清理Event

当一些故障节点event无法自动同步成功时,需要强行删除。比如单节点集群,故障节点替换操作时,都要强行清理故障节点的所有event。

95版本变动

95版本如果启用了多VC模式,则各种命令需要指定具体的vc。如果从86升级上来,或者采用了兼容模式,则无需指定vc。

执行gcadmin命令,如果能看到gnode节点,则为兼容模式。如果如下面的输出,变成了vcName列表,则是多vc模式。

兼容模式的vcname默认为vcname000001

可以gccli登录集群,运行 show vcs查看当前所有vc。

gbase> show vcs;
+---------+------+---------+
| id      | name | default |
+---------+------+---------+
| vc00001 | vc_a |         |
+---------+------+---------+
1 row in set (Elapsed: 00:00:00.00)
[gbase@vm151 ~]$ gcadmin
CLUSTER STATE:         ACTIVE

====================================
| GBASE GCWARE CLUSTER INFORMATION |
====================================
| NodeName |  IpAddress   | gcware |
------------------------------------
| gcware1  |  10.0.2.151  |  OPEN  |
------------------------------------
====================================================
|      GBASE COORDINATOR CLUSTER INFORMATION       |
====================================================
|   NodeName   | IpAddress  | gcluster | DataState |
----------------------------------------------------
| coordinator1 | 10.0.2.151 |   OPEN   |     0     |
----------------------------------------------------
====================================================
|        GBASE VIRTUAL CLUSTER INFORMATION         |
====================================================
|    VcName    | DistributionId |     comment      |
----------------------------------------------------
|     vc_a     |       1        | vc a for example |
----------------------------------------------------

1 virtual cluster: vc_a
1 coordinator node
0 free data node

[gbase@vm151 ~]$

gcadmin工具

清理指定IP节点的所有event

新功能提醒:如果是862Build43R35.5patch10及版本,可以查看后面gcware接口快速按IP清理的方案。

注意:本命令在V95版本才有,V8系列请用后面章节的命令做清理。

gcadmin rmfeventlog ip

其中ip是清除event的节点IP地址。

指定条件清理

如下三个命令,分别清理dml,ddl和dmlstorage的event. 其中参数和用法完全相同。

原则上清理优先级,dmlstorag  > ddl > dml。

type :清理方法,按照这个方案清理event,包含后面的四种方法:

  • 0 = eventid 按照具体的事件编号清理
  • 1 = tablename 清理指定表名字的所有事件
  • 2 = nodeip 清理指定IP上的所有事件
  • 3 = tablename nodeip 清理指定表名字,指定IP上的所有事件

比如清理指定节点的所有dmlevevt

gcadmin rmdmlevent 2 192.168.0.2

其中2代表按照IP清理,后面的参数是IP地址

gcadmin rmdmlevent

清理dmlevent。

完整命令

gcadmin rmdmlevent type [eventid | tablename | nodeip | tablename nodeip]

gcadmin rmdmlevent 0 10234
gcadmin rmdmlevent 1 testdb.t1
gcadmin rmdmlevent 2 192.168.0.3
gcadmin rmdmlevent 3 testdb.t1 192.168.0.3

在V95版本增加了VC参数,未开启vc功能的可以忽略。

gcadmin rmdmlevent type [eventid | tablename | nodeip | tablename nodeip] [vc vc_name]

gcadmin rmddlevent

清理ddlevent。

完整命令

gcadmin rmddlevent type [eventid | tablename | nodeip | tablename nodeip]

gcadmin rmddlevent 0 10234
gcadmin rmddlevent 1 testdb.t1
gcadmin rmddlevent 2 192.168.0.3
gcadmin rmddlevent 3 testdb.t1 192.168.0.3

在V95版本增加了VC参数

gcadmin rmddlevent type [eventid | tablename | nodeip | tablename nodeip] [vc vc_name]

gcadmin rmdmlstorageevent

清理dmlstorageevent。

完整命令

gcadmin rmdmlstorageevent type [eventid | tablename | nodeip | tablename nodeip]

gcadmin rmdmlstorageevent 0 10234
gcadmin rmdmlstorageevent 1 testdb.t1
gcadmin rmdmlstorageevent 2 192.168.0.3
gcadmin rmdmlstorageevent 3 testdb.t1 192.168.0.3

在V95版本增加了VC参数

gcadmin rmdmlstorageevent type [eventid | tablename | nodeip | tablename nodeip] [vc vc_name]

gcadmin rmdmlstorageevent 0 10234 vc vcname000001
gcadmin rmdmlstorageevent 1 testdb.t1  vc vcname000001
gcadmin rmdmlstorageevent 2 192.168.0.3  vc vcname000001
gcadmin rmdmlstorageevent 3 testdb.t1 192.168.0.3  vc vcname000001

gcware接口

如果是95版本,各种命令都需要指定vcname, 即使是兼容模式。 默认兼容模式为:vcname000001

快速清理指定IP的大量event

该功能在862Build43R35.5Patch10及之后版本提供。

警告:该方法适用于节点无法恢复,要节点替换才能恢复情况下的event清理。

该功能可以快速清理指定节点的dml,ddl,dmlstorage三类event. 第二个参数是数量,可以根据实际清理速度填写。如果不确认,可以先测试清理1000个评估耗时。一般万一级的应秒级完成。

提示:IPV4地址如果清理无任何效果,则可以在IP前面加上::ffff:的IPV6样式试试,比如
192.168.0.1 变成
::ffff:192.168.0.1

[gbase@localhost gcinstall_8624335.5p10]$ python
Python 2.7.5 (default, Oct 14 2020, 14:45:30)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gcware
>>> help('gcware')

86版本
>>> gcware.cleardmlfeventbyip('::ffff:10.0.2.201',100);
0
>>> gcware.clearddlfeventbyip('::ffff:10.0.2.201',100);
0
>>> gcware.cleardmlstoragefeventbyip('::ffff:10.0.2.201',100);
0
>>> exit

如果是95版本,则需要额外指定vcname参数。 兼容模式为vcname000001
>>> gcware.cleardmlfeventbyip('vcname000001','::ffff:10.0.2.201',100);
0
>>> gcware.clearddlfeventbyip('vcname000001','::ffff:10.0.2.201',100);
0
>>> gcware.cleardmlstoragefeventbyip('vcname000001','::ffff:10.0.2.201',100);
0

通配符形式清理所有event

注意:该方案一般在前面方案无法满足时使用,尽量避免。

常见场景:【单节点】集群,由于没有高可用,event也不会自动恢复,需要手工清理。

[root@node1 trace]# python
Python 2.6.6 (r266:84292, Sep 12 2011, 14:03:14)
[GCC 4.4.5 20110214 (Red Hat 4.4.5-6)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gcware

如下三个命令对应三种event类型,正则的方式匹配。如下样例的正则是匹配全部。

86版本
gcware.clearddlfevent('.*')
gcware.cleardmlfevent('.*')
gcware.cleardmlstoragefevent('.*')

在95版本,参数增加了vcname
gcware.clearddlfevent('vcname000001','.*')
gcware.cleardmlfevent('vcname000001','.*')
gcware.cleardmlstoragefevent('vcname000001','.*')

正则精确匹配方式,如果是95,同样要指定vcname参数。

如果想清理掉和某个表相关的日志,可以调用:

86版本
clearXXXXfevent("^test.t$");
95版本
clearXXXXfevent('vcname000001',"^test.t$");

如果想清理掉和一个库相关的所有日志,可以调用:

clearXXXXfevent("^database$| ^database\..*")

退出方法

Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit();

南大通用GBase 8a手工清理Event》有1条评论

评论已关闭。