强一致性高可用的MySQL集群-PhxSQL
2016-10-02 22:04:06 阿炯

PhxSQL是一个兼容MySQL、服务高可用、数据强一致的关系型数据库集群。PhxSQL以单Master多Slave方式部署,在集群内超过一半机器存活的情况下,可自身实现自动Master切换,且保证数据一致性。采用C/C++开发并在BSD协议下授权。


主要目录介绍

目录名     
phxsqlproxy     phxsqlproxy模块,负责接入请求。
phxbinlogsvr     负责MySQL binlog数据同步,master管理等。
percona     percona5.6.31-77.0的官方源代码
phx_percona/plugin/phxsync_phxrpc     percona用于跟phxbinlogsvr同步binlog的插件。
phx_percona/plugin/semisync     因兼容问题,修改了semisync的部分代码,目录内为修改过的文件。
third_party/glog     Google Glog 第三方库
third_party/leveldb     Google Leveldb 第三方库
third_party/protobuf     Google Protobuf 3.0+ 第三方库
third_party/phxpaxos     paxos协议库。用于phxbinlogsvr之间同步binlog
third_party/colib     协程基础库。phxsqlproxy使用
third_party/phxrpc     rpc框架。phxbinlogsvr使用

PhxSQL 架构:


PhxSQL基于Percona 5.6开发。Percona是MySQL的一个分支,功能和实现与MySQL基本一致。PhxSQL提供Zookeeper级别的强一致和高可用,完全兼容MySQL。

总览:

PhxSQL具有服务高可用、数据强一致、高性能、运维简单、和MySQL完全兼容的特点,具体如下:

服务高可用:PhxSQL集群内只要多数派节点存活就能正常提供服务;出于性能的考虑,集群会选举出一个Master节点负责写入操作;当Master失效,会自动重新选举新的Master。

数据强一致:PhxSQL采用多节点冗余部署,在多个节点之间采用paxos协议同步流水,保证了集群内各节点数据的强一致。

高性能:PhxSQL比MySQL SemiSync的写性能更好,得益于Paxos协议比SemiSync协议更加高效;

运维简单:PhxSQL集群内机器出现短时间故障,能自动恢复数据,无需复杂的运维操作;PhxSQL更提供一键更换(新增/删除)集群内的机器,简化运维的工作。

MySQL完全兼容:PhxSQL是基于Percona的研发,完全兼容MySQL的操作命令。可通过MySQL提供的mysqlclient/perconaserverclient直接操作PhxSQL。


项目中包含PhxSQL源代码,源代码编译时所需要的一些第三方库,及可直接在Linux环境下运行的二进制包。其中代码使用到了微信团队自研的另外三个开源项目(phxpaxos,phxrpc,colib)。


最新版本:5.6


项目主页:https://github.com/tencent-wechat/phxsql