热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GBase扩容操作重分布完成后清理旧的distribution时报错FCannotdropnodedatamapEventLogisusingdistribution

GBase8a在扩容操作中,当所有表已经全部重分布到新的分布策略distribution以后,老的distribution就可以用refreshnode

GBase 8a在扩容操作中,当所有表已经全部重分布到新的分布策略distribution以后,老的distribution就可以用refreshnodedatamap drop删除了。 但如果此时有些表存在event,且使用的老的策略,则会出现这个错误:Can not drop nodedatamap EventLog is using distribution。此时需要将原有的event处理完成才可以继续操作。

换个角度,如果是扩容,在操作前将集群状态全部恢复正常,没有event会更合适一些,可以减少运维的耗时。

报错样例

gbase> refreshnodedatamap drop 1;
ERROR 1707 (HY000): gcluster command error: Can not drop nodedatamap 1. FEventLog is using distribution.
原因
查看gcadmin,确实有event[gbase@rh6-1 gcinstall_43R33]$ gcadmin
CLUSTER STATE: ACTIVE
CLUSTER MODE: NORMAL=================================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
=================================================================
| NodeName | IpAddress |gcware |gcluster |DataState |
-----------------------------------------------------------------
| coordinator1 | 10.0.2.201 | OPEN | OPEN | 1 |
-----------------------------------------------------------------
=============================================================
| GBASE DATA CLUSTER INFORMATION |
=============================================================
|NodeName | IpAddress |gnode |syncserver |DataState |
-------------------------------------------------------------
| node1 | 10.0.2.201 | OPEN | OPEN | 0 |
-------------------------------------------------------------
| node2 | 10.0.2.202 | OPEN | OPEN | 0 |
-------------------------------------------------------------

查看具体event,发现本次比较特殊,是gssys表的审计日志audit_log出了问题。

[gbase@rh6-1 gcinstall_43R33]$ gcadmin showdmlevent
Event count:0
[gbase@rh6-1 gcinstall_43R33]$ gcadmin showddlevent
Event count:0
[gbase@rh6-1 gcinstall_43R33]$ gcadmin showdmlstorageevent
Event count:1
Event ID: 2
ObjectName: gbase.audit_log
TableID: 0Fail Data Copy:
------------------------------------------------------
NodeIP: 10.0.2.201 FAILURE

处理方案
修复该event。如果系统无法自动同步完成,排查原因。

查看gcluster日志下的gc_recovery.log,发现该event无法自动恢复,因为gssys表是本地表,没有副本。

2022-04-14 08:57:40.898 [ERROR] <STORAGE-Recover-0>: GetSyncDmlStorgeInfo error, eventid&#61;2, tablename&#61;gbase.audit_log, content&#61;gbase.audit_log,,true
2022-04-14 08:57:40.898 [INFO ] <RECOVER-INFO-0>: Finishing Recovering gbase.audit_log,tid 0
2022-04-14 08:57:41.119 [INFO ] <RECOVER-INFO>: MasterAssignTask dmlstoragetid num 1.
2022-04-14 08:57:41.119 [INFO ] <RECOVER-INFO-0>: Start Recovering gbase.audit_log tid 0
2022-04-14 08:57:41.119 [INFO ] <STORAGE-Recover-0>: Start DMLStorge recover gbase.audit_log,tid 0 eventnum 1
2022-04-14 08:57:41.119 [INFO ] <STORAGE-Recover-0>: Start to DMLStorge recover of eventid(2)
2022-04-14 08:57:41.119 [ERROR] <GCWare>: sys gbase.audit_log nodeid: 3372351498, have dmlstorageevent,eventid: 2
2022-04-14 08:57:41.119 [ERROR] <STORAGE-Recover>: GetDataCopyMap error, can&#39;t get a source node, because of no normal
2022-04-14 08:57:41.119 [ERROR] <STORAGE-Recover-0>: GetSyncDmlStorgeInfo error, eventid&#61;2, tablename&#61;gbase.audit_log, content&#61;gbase.audit_log,,true

登录节点&#xff0c;修复该表&#xff0c;发现报错

gbase> repair table gbase.audit_log;
&#43;-----------------&#43;--------&#43;----------&#43;-----------------------------------&#43;
| Table | Op | Msg_type | Msg_text |
&#43;-----------------&#43;--------&#43;----------&#43;-----------------------------------&#43;
| gbase.audit_log | repair | Error | Incorrect file format &#39;audit_log&#39; |
| gbase.audit_log | repair | error | Corrupt |
&#43;-----------------&#43;--------&#43;----------&#43;-----------------------------------&#43;
2 rows in set (Elapsed: 00:00:00.01)

确认是表数据文件彻底损坏&#xff0c;只能清空数据

gbase> repair table gbase.audit_log use_frm;
&#43;-----------------&#43;--------&#43;----------&#43;-----------------------------------&#43;
| Table | Op | Msg_type | Msg_text |
&#43;-----------------&#43;--------&#43;----------&#43;-----------------------------------&#43;
| gbase.audit_log | repair | Error | Incorrect file format &#39;audit_log&#39; |
| gbase.audit_log | repair | status | OK |
&#43;-----------------&#43;--------&#43;----------&#43;-----------------------------------&#43;
2 rows in set (Elapsed: 00:00:00.00)

然后清理event

[gbase&#64;rh6-1 gcinstall_43R33]$ gcadmin rmdmlstorageevent 0 2
[gbase&#64;rh6-1 gcinstall_43R33]$ gcadmin
CLUSTER STATE: ACTIVE
CLUSTER MODE: NORMAL&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
| GBASE COORDINATOR CLUSTER INFORMATION |
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
| NodeName | IpAddress |gcware |gcluster |DataState |
-----------------------------------------------------------------
| coordinator1 | 10.0.2.201 | OPEN | OPEN | 0 |
-----------------------------------------------------------------
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
| GBASE DATA CLUSTER INFORMATION |
&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
|NodeName | IpAddress |gnode |syncserver |DataState |
-------------------------------------------------------------
| node1 | 10.0.2.201 | OPEN | OPEN | 0 |
-------------------------------------------------------------
| node2 | 10.0.2.202 | OPEN | OPEN | 0 |
-------------------------------------------------------------

重新删除旧的分布策略成功

gbase> refreshnodedatamap drop 1;
Query OK, 0 rows affected (Elapsed: 00:00:04.64)gbase> ^CAborted
[gbase&#64;rh6-1 gcluster]$ gcadmin rmdistribution 1
cluster distribution ID [1]
it will be removed now
please ensure this is ok, input y or n: y
gcadmin remove distribution [1] success
[gbase&#64;rh6-1 gcluster]$

总结
当数据库存在event时要及时关注&#xff0c;如果数据库自身无法自动恢复&#xff0c;要排查原因&#xff0c;在排除环境自身问题&#xff0c;比如磁盘损坏&#xff0c;空间满&#xff0c;网络不稳定等。 等event完成恢复后再进行扩容。

如果存在逻辑上的不能自动恢复&#xff0c;比如主副本都被设置了不一致标记&#xff0c;或者如本例的这种本地gssys类型的表&#xff0c;要根据实际清空手工处理。


推荐阅读
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文介绍了如何在 Vue 3 组合 API 中正确设置 setup() 函数的 TypeScript 类型,以避免隐式 any 类型的问题。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • Delphi XE Rtti单元深入解析:TRttiContext的应用与实践
    Delphi XE Rtti单元深入解析:TRttiContext的应用与实践 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文详细介绍了如何在Unity中实现一个简单的广告牌着色器,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 在 iOS 开发中,内存管理是一个至关重要的环节。初学者常常因为内存管理不当导致程序崩溃。本文将详细介绍 iOS 中内存的分配与释放机制,并提供一些实用的技巧。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
author-avatar
张小虎要努力
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有