Focus On Oracle

Installing, Backup & Recovery, Performance Tuning,
Troubleshooting, Upgrading, Patching

Oracle Engineered System


当前位置: 首页 » 技术文章 » MySQL

腾讯微信的PhxSQL数据库

PhxSQL是一个兼容MySQL、服务高可用、数据强一致的关系型数据库集群。PhxSQL以单Master多Slave方式部署,在集群内超过一半机器存活的情况下,可自身实现自动Master切换,且保证数据一致性。
PhxSQL基于Percona5.6开发。不需要借助第三方的集群软件,比如Galera(PXC和MariaDB的集群都需要借助Galera)。功能很强大,和官方的MySQL Group Replication有一拼。其他第三方的有腾讯数平的TDSQL,阿里的AliSQL,网易的InnoSQL等。

MySQL半同步复制存在缺陷,在Master进行切换的场景下,数据难以保证一致。
    当旧Master复制失败时,旧Master和Updated Slave(已收到Binlog的Slave)需要回滚数据。
    当Master进行切换时,旧Master仍有部分Client进行读写。
PhxSQL的设计是为了解决MySQL半同步复制的不足,使MySQL集群在Master切换过程中保证数据的一致。

PhxSQL架构

为了解决MySQL的两个问题(Binlog复制和Master切换),PhxSQL设计了两个模块(Phxbinlogsvr、Phxsqlproxy)和一个MySQL插件(Phxsync)。Phxbinlogsvr负责处理MySQL的Binlog复制和Master管理;Phxsqlproxy负责透传Client请求到Master;Phxsync插件负责MySQL和Phxbinlogsvr的交互。 一台部署了Phxsqlproxy,MySQL和Phxbinlogsvr的机器称为PhxSQL Node。

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)。若需编译源代码,需额外下载,也可以在clone时通过--recurse-submodule获得代码。
phxpaxos项目地址: http://github.com/Tencent/phxpaxos
phxrpc项目地址: http://github.com/Tencent/phxrpc
colib项目地址: http://github.com/Tencent/libco

使用文档

中文详细编译手册
中文部署手册
PhxSQL 成员管理
从现有MySQL数据库迁移
官方文章
MySQL半同步复制的数据一致性探讨
PhxSQL架构介绍
PhxSQL强一致同步基础PhxPaxos库原理介绍
谈谈PhxSQL的设计和实现哲学(上)
谈谈PhxSQL的设计和实现哲学(下)
开发者文章
安装PhxSQL笔记 by hzlpy
微信开源PhxSQL在CentOS下编译安装 by jingyihome

Reference

https://github.com/Tencent/phxsql/wiki

https://github.com/Tencent/phxsql/blob/master/README.zh_cn.md

https://github.com/Tencent/phxsql/wiki/Architecture

https://zhuanlan.zhihu.com/p/22361242

https://zhuanlan.zhihu.com/p/22345242


关键词:phxsql mysql 

相关文章

OGG from MySQL to Oracle
MySQL数据库高可用实践
Install oracle products on docker
MySQL Cookbook for Oracle DBA
MySQL HA - Innodb Cluster
腾讯微信的PhxSQL数据库
MySQL Group Replication(MGR)
MySQL and Oracle Enterprise Manager
MySQL Tools for performance, backup, monitor
MySQL Multi-Master Single-Slave Replication
MySQL and GPL
MySQL monthly report from alibaba
Top