加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

谈谈PhxSQL的设计和实现哲学(上)

发布时间:2021-01-08 21:27:22 所属栏目:站长百科 来源:网络整理
导读:副标题#e# 《谈谈PhxSQL的设计和实现哲学(上)》要点: 本文介绍了谈谈PhxSQL的设计和实现哲学(上),希望对您有用。如果有疑问,可以联系我们。 开源地址 https://github.com/tencent-wechat/phxsql 摘要 PhxSQL是一个提供Zookeeper级别强一致和高可用的

也正是因为这个原因,我们没有因为可以减少模块个数而把PhxSQLProxy、PhxBinlogSvr放到MySQL进程内.为了保证和应用最广泛的MySQL单机版兼容,也没有在事务层和存储层介入或修改.

4.3. 简单的架构、部署、和运维

在满足要求的前提下,简单的架构有很多好处,例如开发、维护、诊断、维护、可靠性等等都变得容易.PhxSQL只有3+1个模块.PhxSQL中的MySQL是必须的.PhxBinlogSvr负责全局binlog存储和同步、选主、集群成员管理等关键功能.在很多MySQL主备集群方案中,使用Zookeeper、etcd、心跳检测、Agent等承担选主的功能.PhxSQLProxy则作为传统MySQL client访问PhxSQL中MySQL服务的代理,使得PhxSQL的换主操作对于传统MySQL client透明.在其它集群方案中,一般也是通过代理MySQL proxy、或者虚拟网关VIP,向传统MySQL client屏蔽集群的换主操作,提供透明访问.可选模块是PhxSQL client lib,它修改了MySQL client库中的连接初始化函数,允许传入一个集群的PhxSQLProxy列表,从而在一个PhxSQLProxy没有响应时、自动访问其它可用PhxSQLProxy,进一步提高可用性.开发人员可以直接链接PhxSQL client lib.

PhxSQL的部署和运维都很简单.在部署时,只要在目标机各自装好PhxSQL,在配置中指定集群的机器的IP列表,PhxSQL即可运行.换主这个操作已经从运维层面转移到PhxSQL正常的工作流程.通常MySQL集群中换主后可能需要人肉检查数据一致性、人肉“闪回”(这可能违反一致性保证,导致“幻读”);无法”闪回“导致必须清除某台MySQL,重新拉取数据备份,和追流水等.这些耗时、繁重、易错的操作在PhxSQL中已经完全不需要.

至于热升级和热变更集群成员更简单.PhxSQL支持rolling-update,可以逐步升级每台机器.变更集群成员是指往集群添加机器、撤出机器、和替换机器(原子操作).在保证强一致和高可用前提下,热变更(不停服变更)是非常困难的.PhxSQL通过在Paxos中实现成员变更解决了这个难题.PhxSQL提供了一个变更操作命令.当在新机器安装和启动PhxSQL后(要求MySQL已经加载一份较新的数据备份),可以在现有集群中一键将新机器引入、剔除一台旧机器、或者同时做两者.这三种操作都是原子操作!新机器会自动追流水.想想看,相当于Zookeeper支持热变更成员,是不是很令人激动的特性?

(编辑:网站开发网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!