暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8a发生主副本都损坏状态为1的几种原因

生命之源 2021-06-09
1358

本文根据实际项目情况,介绍几种GBase 8a数据库集群,主副本都损坏或标志datastate为1的原因。

DDL操作

比如加列,删表等。集群默认机制是只要任何一个管理节点成功,就视同成功,其它所有不成功的管理和计算节点,记录event并后续尝试。

如此也就造成了有出现主副本均设置为1的情况。

但此类问题,只要DDL重试成功了,会自动恢复。具体的原因需要看gcrecovery.log里,恢复日志的内容。

一般来说,DDL报错出现event,除非文件系统及硬件损坏,更常见的是有查询在使用这个表,导致ddl无法拿到表锁,超过参数table_lock_wait_timeout后,gcluster local如果50s没有持到单机锁,就会报错记ddlevent(gnode层也是这个逻辑)。

主备文件系统全部损坏

机房大面积断电,某品牌服务器,有超过1/3的机器出现文件系统故障,从message能看到报错信息。现场是1+2副本,依然有多组主备全部损坏,最终文件系统重做,这部分数据丢失。

一份数据标识不一致后,副本出现不可自主恢复故障
1+1副本,由于网络超时,一台机器的分片被设置为不一致状态,数据库会自动从副本同步。

在等待同步,或者正在同步过程中,副本节点出现不可自主恢复性故障,比如磁盘满了、文件系统损坏,宕机或断电出现数据没有正确刷到磁盘上(虚拟机或云环境常见,物理机RAID卡带电池没发现)等情况,集群记录了event,导致副本的数据也不可访问。

处理方案

1、在gnode层查询主备分片哪个可用, GBase 8a数据库如何查看数据或数据文件是否正常

将可用的(包括你人工选择认为更准确的),清理掉该IP对应的event, 数据库会自动向另一个同步。

2、如果都不可用,就只能将这个表的数据从gnode上清除(truncate table myTABLENAME_nX)。然后GBase 8a手工清理Event

3、如果都损坏,且表目录都没有了,则需要手工创建表结构。在gnode上create table myTABLENAME_nX (…… ) ;
并建议在集群层,做一次表数据转储。

https://www.gbase8.cn/4822

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论