gs_clean
背景信息
数据库集群的分布式结构需要依靠两阶段事务管理来保证集群事务的一致性,当集群发生异常或者某个节点重启时,就会有未执行完的两阶段事务存在集群中,因为某种原因,该事务无法执行下去,并且会阻塞其他两阶段事务的执行。这时就需要手动清理掉这些僵尸事务,使集群恢复正常。gs_clean是GaussDB 200提供的两阶段事务清理工具,当某个CN或者DN重启后,需要恢复两阶段事务,此时可以连上任意一个CN清理或查询集群中两阶段事务的状态等信息。
语法
连上CN,清理DN未处理的两阶段事务。
gs_clean [OPTION ...] [DBNAME [USERNAME]]
参数说明
OPTION的取值如下所示:
- -a, --all
清理所有可用数据库中的未处理的两阶段事务。
- -c, --commit
提交所有prepared事务。
- -d, --dbname=DBNAME
清理数据库中未处理的两阶段事务。
取值范围:集群中有效的数据库名称。
默认值:postgres。
- -h, --host=HOSTADDRESS
目标CN所在主机的IP地址。
取值范围:目标CN所在主机的IP地址。
默认值:localhost
- -n, --node=NODENAME
只恢复该节点中的prepared事务。
取值范围:NODENAME的取值是当前恢复节点的名称。
- -N, --no-clean
仅收集集群中的两阶段中prepared事务,并不对其进行恢复。
- -p, --port=PORT
目标CN的端口号。
取值范围:目标CN的端口号。
默认值:25308。
- -q, --quiet
静态模式,除了错误信息,不打印任何其它信息。
- -r, --rollback
回滚所有prepared事务。
- -R, --rollback-cn-name
当CN出现故障并且无法确定其发起的两阶段事务状态时,对指定CN发起的残留事务进行回滚(使用该参数时需要保证故障的CN从集群中删除,不再作为集群节点运行,否则会导致集群数据不一致。)
- -s, --status
打印两阶段事务的状态。
- -t, --timeout=SECS
连接超时机制。
默认值:5s。单位:秒(s)。
- -U, --username=USERNAME
连接数据库的用户名称。
取值范围:数据库中有效的用户名称。
默认值:操作系统用户名称。
- -v, --verbose
打印详细的恢复信息。
- -V, --version
打印该工具的版本信息。
- -w, --no-password
无需输入密码验证。
- -W, --password=PASSWORD
需要输入密码验证。
取值范围:有效字符串。符合密码复杂度要求。
- -C, --clean
仅对PLAN_TABLE_DATA表中的数据进行清理。
- -?, --help
打印帮助信息。
查看更多:华为GaussDB 200 服务端工具