南大通用GBase 8a磁盘空间满,清理后老版本集群出现gbased无法启动的解决方案

在GBase 8a的早期版本,比如8.6.2Build20系列,当出现磁盘空间满时,有可能导致各种奇怪的现象,报错corosync无法启动,gbased服务启动。本文介绍一种gbased无法启动的案例。该案例在新版本集群里已经自动处理。

参考

现象

数据磁盘空间满(根没有满),客户在手工删除一部分文件腾出空间后,重启数据库服务,gbased无法成功。

分析

查看gnode的system.log发现只有宕机的信息 fatal segnal 11

看现象,数据库服务刚启动就自动退出了。

查看文件系统,没有问题,只是磁盘空间满了,已经清理了空间。

查看 gnode/userdata/gbase目录,发现了如下的.state文件

解决

删除该state文件,启动成功。

该问题是在集群在做一些变动操作时,需要记录一些当前信息,如果期间宕机,下次启动时会尝试恢复。而磁盘空间满导致该文件长度为0,下次启动时报错退出。

在后续新版本(大约2018年以后)里已经增加了判断,不会再宕机。