GBase 8a通过gcadmin recover命令管理同步任务,设置vc优先恢复

gcrecover是GBase 8a集群内置的,用于恢复集群event的服务,部署在每个管理(gcluster)节点上。通过gcadmin recover命令,实现暂停,恢复同步工作,设置或取消某个VC优先恢复等功能。

命令参数

执行gcadmin --help, 如果能看到有recover部分,则证明该版本支持此功能。输出样例如下:

        27. gcadmin recover <[pause | continue | cancel highpriority | show < status | highpriority >] |
                             [highpriority vc_name [event_type]]>                                         : event_type: {ddlevent | dmlevent | dmlstorage}

支持的功能包括

pause

暂停gcrecover服务。正在恢复中的会继续,但不会有新的恢复任务启动。

continue

恢复gcrecover服务。如果处于pause状态,则恢复成正常,否则被忽略。

highpriority vc_name [event_type]

设置某个VC优先恢复,可选参数可设置三种event类型,包括ddlevent 、dmlevent |dmlstorage。

show status

当前gcrecover服务状态。continue为正常服务状态(默认),pause为暂停状态。

show highpriority

显示当前优先恢复的vc以及类型(如果设置了,否则为全部类型)。

如果没有优先的,则返回None。

样例

暂停和恢复

可以多次暂停或恢复,不会报错。

[gbase@vm151 config]$ gcadmin recover pause
gcadmin recover pause success
[gbase@vm151 config]$ gcadmin recover pause
gcadmin recover pause success
[gbase@vm151 config]$ gcadmin recover show status
pause
[gbase@vm151 config]$ gcadmin recover continue
gcadmin recover continue success
[gbase@vm151 config]$ gcadmin recover continue
gcadmin recover continue success
[gbase@vm151 config]$ gcadmin recover show status
continue
[gbase@vm151 config]$

设置和取消高优先级

可重复设置或取消,不会报错。

[gbase@vm151 config]$ gcadmin recover highpriority vc_a ddlevent
gcadmin recover highpriority vc_a ddlevent success

[gbase@vm151 config]$ gcadmin recover show highpriority
gcadmin recover highpriority vc_a ddlevent

[gbase@vm151 config]$ gcadmin recover cancel highpriority
gcadmin recover cancel highpriority success
[gbase@vm151 config]$ gcadmin recover cancel highpriority
gcadmin recover cancel highpriority success
[gbase@vm151 config]$ gcadmin recover show highpriority
none
[gbase@vm151 config]$

gc_recover.log日志

从日志中,可以看到pause和continue和优先级信息。

2026-02-11 16:05:57.934 [INFO ] <RECOVER-INFO>: refresh gcrecover status is pause
2026-02-11 16:05:59.489 [INFO ] <RECOVER-INFO>: refresh gcrecover status is pause
2026-02-11 16:06:50.154 [INFO ] <RECOVER-INFO>: refresh gcrecover status is continue
2026-02-11 16:06:52.180 [INFO ] <RECOVER-INFO>: refresh gcrecover status is continue
2026-02-11 16:08:21.377 [INFO ] <RECOVER-INFO>: get gcrecover high pri rule is vc_a&ddlevent
2026-02-11 16:08:21.378 [INFO ] <RECOVER-INFO>: get gcrecover event rule vcname-vc_a eventype-ddlevent
2026-02-11 16:08:21.378 [INFO ] <RECOVER-INFO>: recover change version 6
2026-02-11 16:08:48.273 [INFO ] <RECOVER-INFO>: get gcrecover high pri rule is none
2026-02-11 16:08:48.273 [INFO ] <RECOVER-INFO>: reset recover config none
2026-02-11 16:08:48.273 [INFO ] <RECOVER-INFO>: recover change version 7
2026-02-11 16:08:55.988 [INFO ] <RECOVER-INFO>: get gcrecover high pri rule is none
2026-02-11 16:08:55.988 [INFO ] <RECOVER-INFO>: reset recover config none
2026-02-11 16:08:55.988 [INFO ] <RECOVER-INFO>: recover change version 8

当暂停时,即使有新的event,gcrecover也不会工作,直到continue状态。

重启gcrecover服务,不会影响状态。该标志应记录在gcware中。

如下是重启gcrecover后,立即发现当前状态为pause。

2026-02-11 11:21:33.879 [INFO ] <RECOVER-INFO>: Recover Thread(0x7fd1b67ee700) is been built success
2026-02-11 11:21:33.879 [INFO ] <RECOVER-INFO>: Recover Thread(0x7fd1b5fed700) is been built success
2026-02-11 11:21:33.879 [INFO ] <RECOVER-INFO>: Recover Thread(0x7fd1b57ec700) is been built success
2026-02-11 11:21:33.879 [INFO ] <RECOVER-INFO>: Recover Thread(0x7fd1b4feb700) is been built success
2026-02-11 11:21:33.880 [INFO ] <RECOVER-INFO>: Recover Thread(0x7fd1b47ea700) is been built success
2026-02-11 11:22:08.783 [INFO ] <RECOVER-INFO>: refresh gcrecover status is pause
2026-02-11 11:22:17.851 [INFO ] <RECOVER-INFO>: refresh gcrecover status is continue
2026-02-11 11:22:47.391 [INFO ] <RECOVER-INFO>: get gcrecover high pri rule is none
2026-02-11 11:22:47.392 [INFO ] <RECOVER-INFO>: reset recover config none
2026-02-11 11:22:47.392 [INFO ] <RECOVER-INFO>: recover change version 2

总结

该功能主要用于在多vc情况下,设置某个vc的event优先恢复。

暂停和继续是附属功能,特殊情况才会使用。比如同步占用资源很多影响业务,可能会在业务繁忙期,暂停恢复,等业务空闲期再继续。