首页 > 其他分享 >【YashanDB知识库】自动选举配置错误引发的一系列问题

【YashanDB知识库】自动选举配置错误引发的一系列问题

时间:2024-07-31 10:07:56浏览次数:13  
标签:配置 YashanDB 选举 数据库 知识库 kill 自动 参数

问题现象

问题出现的步骤/操作:

  • 配置自动选举,数据库备库手动发起switch over,命令会报错

  • 主、备库变为只读状态,数据库无法进行读写操作

  • shutdown immediate 停止数据库,此时发现数据库一直没有退出,业务人员反馈需要尽快恢复数据库的读写状态

  • kill -9杀死yasdb进程,数据库发生coredump 。重启数据库并使用failover将降备的数据库提升为主库

  • 数据库恢复正常读写状态

相关问题单:数据库使用shutdown immediate无响应,操作系统层面强制停止数据库进程时coredump

问题的风险及影响

客户环境为测试环境,主备库均为只读状态,影响测试业务的开展。

问题影响的版本

YashanDB版本:22.2.10.100

问题发生原因

和现场确认,配置开启了自选举参数HA_ELECTION_ENABLED为TRUE,问题看起来各种诡异,根因都是这个参数配置错误。

该参数是分布式、或者一主多备(3个节点以上)才能配置,2个节点需要使用仲裁选举。可参考文档说明:[自动选举配置 | YashanDB Doc (yasdb.com)]

  • 因为参数设置错误,数据库一直有选举的相关错误,主备状态异常。

  • 在执行shutdown immediate之后,因自动选举数据库被重新拉起,可查看下面截图。

  • 在kill -9杀死进程的时候,触发异常产生coredump。

一直都有选举失败情况:

shutdown,重新拉起并开始接收归档:

解决方法及规避方式

1、一主一备自动选举需要升级到22.2.12.100及以上或23.1版本,可以使用yasboot仲裁选举。

2、22.2.10及以下版本要使用自动选举需要部署一主多备(3个节点或以上)。节点少于3个,不能配置自动选举参数,主备切换使用switchover手动切换。

问题分析和处理过程

1、检查数据库日志,从run.log,可以看到数据库一直在做选举,且选举失败,主备状态一直异常。怀疑是选举参数配置有问题。

2、检查配置参数。发现开启了自选举参数HA_ELECTION_ENABLED为TRUE,该参数在22.2.10.100版本一主一备的情况下不适用。

3、确认core的原因。现场怀疑是kill进程导致undo没回滚完导致core,实际使用killYashanDB 会捕捉相应的信号量做相应的处理,保障可以优雅退出。但是kill -9命令发送的是SIGKILL信号,是一种不可被捕获信号,它强制目标进程立即停止运行,无法让程序优雅地退出。由于数据库有大量的内存、线程、文件句柄,kill -9无法保证资源退出先后顺序,内部资源被破坏,同时系统如果还有其他操作,出core是正常的。

4、core堆栈是在审计的步骤,研发分析发现审计逻辑不严谨,缺少校验(备机不需要审计),优化相应的校验逻辑。

经验总结

1、kill -9无法使YashanDB优雅退出。正常使用shutdown immediate 停止数据库,无法退出可以使用kill(不带-9)

2、22.2.10及以下版本要使用自动选举需要部署一主多备(3个节点或以上)。节点少于3个,不能配置自动选举参数。

3、出现core需要做严谨分析相应的逻辑,完善相应的校验。

标签:配置,YashanDB,选举,数据库,知识库,kill,自动,参数
From: https://www.cnblogs.com/YashanDB/p/18334005

相关文章

  • 【YashanDB知识库】账号被锁,如何分析具体原因
    问题现象客户刚开始使用YashanDB的时候,经常收到客户反馈账号被锁,但是不知道哪里触发了。问题的风险及影响客户环境为测试环境,影响测试业务的开展。问题影响的版本YashanDB版本:23.1.3.101问题发生原因账号被锁一般有下面原因:●密码尝试次数过多:用户在短时间内连续多次输......
  • 【YashanDB知识库】使用select * 创建的物化视图无法进行查询重写
    问题现象使用如下语句准备测试数据:altersystemsetquery_rewrite_enabled=forcescope=both;droptabletest;createtabletest(tidnumber,tnamevarchar2(30));beginforiin1..100000loopinsertintotestvalues(i,i||'abcd');endloop;end;/commit......
  • 【YashanDB知识库】如何远程连接、使用YashanDB?
    问题现象在各个项目实施中,我们经常遇到客户、开发人员需要连接和使用YashanDB但不知如何操作的问题,本文旨在介绍远程连接、使用YashanDB的几种方式。问题的风险及影响无风险问题影响的版本历史版本~23.2问题发生原因无解决方法及规避方式不需要规避问题分析和处理过程......
  • 【YashanDB知识库】如何使用yasldr导入lob类型?
    问题现象在各个项目实施中,有时候会使用到yasldr工具进行csv数据的导入。关于yasldr一般的使用方法,官方文档已经有详细的介绍,具体可见:yasldr使用指导。但在涉及LOB类型的导入时,会有一些疑问,比如什么是lls模式、什么是lobfile模式等等。本文就关于如何使用yasldr导入lob类型做进一......
  • 【YashanDB知识库】列与存储过程中重名变量/别名问题
    问题现象当一条查询中出现了重复别名,或者在一个存储过程中出现了变量名称与查询中别名相同,就会报错。这个问题在多个客户现场出现。createtabletest_tab1(c1int,c2int);createtabletest_tab2(c1int,c2int);select*fromtest_tab1t1jointest_tab2t2ont2.......
  • 【YashanDB知识库】服务端是GBK编码,导致从22.2.12.100升级到22.2.13.100失败问题
    问题现象问题单:22.2.12.100升级到22.2.13.100失败现象:如下图,从22.2.12.100升级到22.2.13.100失败,报错。问题风险及影响版本升级失败,影响上线问题发生版本客户版本:22.2.12.100现在版本已经修改掉这个问题,升级比较时忽略掉"----"开头的分隔符和结果前后的空格。问题发生原......
  • 【YashanDB知识库】绑定参数,同一个sql多个执行计划的问题
    问题现象同一个sql有两个执行计划,是否合理?它的EXECUTIONS,ELAPSED_TIME等统计信息怎么看,是独立分开的还是统一计算的?如下图:问题影响版本tpcc测试:23.2.1.100问题的风险及影响影响EXECUTIONS等sql统计信息的计算问题发生原因同一条sql,特别是绑定参数的sql,参数类型不同,会导......
  • 【YashanDb知识库】YashanDB的JDBC/OCI驱动如何设置字符编码
    问题现象Oracle、Mysql数据库链接串,JDBC驱动连接串可以指定客户端的编码格式:jdbc:mysql://hostname:port/database_name?useUnicode=true&characterEncoding=utf8mb4jdbc:oracle:thin:@//hostname:port/service_name?NLS_LANGUAGE=AMERICAN&NLS_TERRITORY=AMERICA&NLS_CHARACTE......
  • 【YashanDB数据库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIE
    问题现象客户的java日志中有如下异常信息:问题的风险及影响对正常的业务流程无影响,但是影响druid的mergesql功能(此功能会将sql语句中的字面量替换为绑定变量,然后将替换以后的sql视为同一个,然后用做执行性能统计)问题影响的版本与yashandb版本无关问题发生原因druid源码中在......
  • AI知识库这事儿FastGPT是专业的
    在搭建AI知识库这事儿上,有不少成熟的框架,我推荐使用FastGPT。这篇文章笔者就使用过的两款平台做个比较,FastGPT和百度千帆平台。1.为什么要搭建知识库随着企业的运营,企业的私有数据越来越多(结构化、半结构化、非结构化的数据)。这么多数据,我们不可能都记在大脑里,就算老员工能记住......