南大通用GBase 8a是将数据分散到多台服务器来实现MPP架构,每个分片数据通过副本来保证高可用,最高允许2个副本。如果因意外,比如多台服务器RAID卡故障,服务器损毁等肯定无法恢复数据的情况,导致分片所在的所有主副本都不可用,此时虽然其它没有损坏的服务器数据是正常的,但在集群层因部分分片数据丢失而无法查询(完整性)。 如果用户允许这部分无法恢复的数据丢失,其它数据希望能继续查询,新服务器能替换现有故障节点,新的表能继续提供正常服务时,本文提供了一个处理方案。
分类: GBase8a错误处理
数据库使用报错,以及能解决或规避的方案。不包括产品BUG.a
南大通用GBase 扩容操作重分布完成后清理旧的distribution时报错FCan not drop nodedatamap EventLog is using distribution
南大通用GBase 8a在扩容操作中,当所有表已经全部重分布到新的分布策略distribution以后,老的distribution就可以用refreshnodedatamap drop删除了。 但如果此时有些表存在event,且使用的老的策略,则会出现这个错误:Can not drop nodedatamap EventLog is using distribution。此时需要将原有的event处理完成才可以继续操作。
南大通用GBase 8a采用sudo安装时出现输入密码等待300秒超时现象的原因
南大通用GBase 8a支持sudo安装,但现有版本不支持在执行sudo命令时输入密码,否则操作系统在等待密码输入[sudo] password for gbase的信息,而安装程序在等待命令返回,直到300秒的超时时间到了报错。现有解决方案是调整操作系统sudo策略,让gbase用户执行sudo时无需输入密码,包括第一次运行sudo。
南大通用GBase 8a 安装ipv6时报错The number of coordinateHost and coordinateHostNodeID is inconsistent
南大通用GBase 8a 支持IPV6,同时内部没有使用字符串,而是用nodeid一个数字来代替。其中ipv4是从IP地址计算出来的,而IPV6则需要用户指定一个nodeid,,所以有几个管理节点的IPV6的地址数量,必须对应指定几个唯一的管理节点的nodeid, 如果不同,则报不一致的错误。The number of coordinateHost and coordinateHostNodeID is inconsistent
南大通用GBase 8a V95安装时报错Dir dbaUser 'gbase' doesn't have write and privilege to this dirctory
南大通用GBase 8a V95版本在安装时,对安装目录必须有写入权限。新版本自动检测了该目录,如果无写入权限,将报这个错判。解决方案就是该目录有dbaUser的写入权限。
南大通用GBase 8a的内存参数设置只允许整数,不支持小数报Error while setting value
南大通用GBase 8a的各种数字类参数,绝大部分只允许整数,如果设置成了带小数点的参数,在当前版本(截至2022-03-04)里会出现服务启动失败,需要修正成整数才可以正常启动。
南大通用GBase 8a查看和强行释放SQL持有锁的方法
南大通用GBase 8a在执行时。为避免并发冲突保证一致性,会持有一些锁来保证自己需要的资源在执行期间不会出现问题。锁在SQL执行完毕后会自动释放掉。在某些特殊场景下,特别是一些老版本集群,出现需要强行释放掉锁的需求,比如SQL长时间无法结束,而该SQL持有的锁又导致其它的SQL无法正常运行,同时环境又不能重启节点服务时,可以考虑本文的方法强行释放SQL持有的锁。
南大通用GBase 8a查看和清理故障恢复状态Failover的方法
南大通用GBase 8a在执行dml,ddl等数据变动业务时,为了避免发起节点出现故障,提供了failover机制来清理残余信息,保证集群一致性。针对一些特殊情况,特别是早期的版本,可能存在某些情况需要强行清理的情况。结合强行释放锁的操作,可以清理指定SQL占用的资源。本文提供的方案请慎重使用。
南大通用GBase 8a 针对分片表故障自动恢复能力的测试和功能验证
南大通用GBase 8a是通过副本来实现高可用的。当某个节点的分片数据出现故障时,集群将自动从副本恢复该分片,本文将测试几种常见的分片故障下的GBase 8a的恢复能力,包括数据不一致,表丢失,表结构不同等。
南大通用GBase 8a的create database 会被查询耗时很长怀疑卡住的现象分析
在GBase 8a里,create database是权限最高的DDL语句,其需要一个db_lock独占锁,如果其它SQL在使用该库,则需要等待,从现象看是被卡住了。即使运行create database if not exists一样要等待锁。