Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

phxbinlogsvr挂了后proxy会不可服务 #64

Closed
weipatty opened this issue Oct 31, 2016 · 6 comments
Closed

phxbinlogsvr挂了后proxy会不可服务 #64

weipatty opened this issue Oct 31, 2016 · 6 comments

Comments

@weipatty
Copy link

备的phxbinlogsvr挂了后(一个点),其实对整体系统来说仍是可以工作的。但proxy会检测到phxbinlogsvr挂了,不可服务。其实prosy仍可路由请求到主节点, 想问下这样设计的考虑是什么呢?

@wodesuck
Copy link
Collaborator

proxy是从binlogsvr获取master信息的,binlogsvr挂了后,proxy不知道要路由到哪里。

@wodesuck
Copy link
Collaborator

wodesuck commented Nov 3, 2016

正在实现一个binlogsvr挂掉后,proxy尽量继续服务的功能(尝试路由到其他机器,但不能连本地的MySQL),将会做成一下选项开关,可能近期会有commit。

说一下之前的设计,考虑的是master的过期时间只有在本地binlogsvr拿到的才是准的(远程的binlogsvr可能由于时钟不同步和网络延迟的原因给master续命:frog:),因此可能错误地连接到实际非master的数据库。

@weipatty 关于这个问题,有什么好的想法或设计的话,欢迎提出来。

@hzlpy
Copy link

hzlpy commented Nov 4, 2016

@wodesuck 续一秒,蛤蛤

@Crixalis2013
Copy link

Crixalis2013 commented Nov 5, 2016

能否在binlogsvr挂掉以后,proxy将信息发送到其它的proxy,让好的proxy完成转发功能 @wodesuck

@wodesuck
Copy link
Collaborator

wodesuck commented Nov 7, 2016

b18208d 实现了这个功能,暂时先放在develop分支里,诚邀小白鼠:smiley:。拉下代码以后需要重编phxsqlproxy,在phxsqlproxy.conf里添加TryBestIfBinlogsvrDead=1

BTW,个人认为在client端做故障屏蔽是更好的解决方法。

@cjcchen cjcchen closed this as completed Nov 23, 2016
@firnsan
Copy link

firnsan commented Apr 27, 2018

@wodesuck 你好, 我有2个问题想请教呢?

  1. 集群正常时, slave上的proxy遇到读写请求会把请求转发到master上的proxy, 而不是直接发到master上? 这是基于什么考虑呢, 导致多一跳.
  2. proxy从binlogsvr获取master信息可能也不是最新最准的, 所以能否让proxy自己自适应探测谁是master?比如发现请求某个mysql失败时(可能是超时, 也可能是mysql明确返回not leader(通过插件实现))自动尝试下一个mysql?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants