ODP的故障切换问题

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】observer 、ODP 4.3
【问题描述】建立一个mysql 租户,sysbench 通过ODP连接该租户,该租户Primary zone=RANDOM的,有三个zone,使用sysbench 持续压测,然后把后端的某个observer kill -9掉,发现sysbench 报错关闭了,

根据ODP的描述,ODP应该会有自动重连机制,对于业务层来说应该是不断连的,一个observer的宕机业务应该是持续可用的,透明不影响的

但是实际测试上看,observer 的宕机会导致业务断开,是我们哪块配置没配置好还是哪里没理解好,还麻烦有知道的老师帮忙解答下,感谢

这个好像Leader 副本切换的话,ODP应该会重新路由到新的Leader 副本所在的server上执行吧?我看文档里面介绍是这样的,但是实际上的sysbench 一直会重试几次,然后就退出程序了

你发一下这个obproxy和observer日志 分析一下具体的问题
你测试期间查一下这个信息 截图
select * from DBA_OB_SERVERS\G;
select * from DBA_OB_ZONES\G;
这个信息也查询一下
show proxycongestion ‘obcluster’\G;

你看你一下这个文档 这个文档有解释
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001052212

麻烦发下ODP和OBserver的整体部署架构,发下observer.log和obproxy.log

这个不是 OB 的问题,是 sysbench 的使用问题。 sysbench 里面循环访问数据库的时候,如果报错就退出循环了。
不过 sysbench 提供了一个 ignore-errors(大概是这个名字)用来忽略数据库错误。你把报错号放进去,sysbench就可以持续跑了。 :slight_smile:

2 个赞

找到问题了,和obpolot大佬说的一样,是sysbench的问题,感谢大佬解答

找到问题了,和obpolot大佬说的一样,是sysbench的问题,感谢大佬解答。