您的位置:首页 > 产品设计 > UI/UE

PhxSQL使用及部署——替换druid metadata使用的mysql

2016-12-28 18:44 411 查看
PhxSQL是一个兼容MySQL、服务高可用、数据强一致的关系型数据库集群。PhxSQL以单Master多Slave方式部署,在集群内超过一半机器存活的情况下,可自身实现自动Master切换,且保证数据一致性。

Github地址:https://github.com/tencent-wechat/phxsql/blob/master/README.zh_cn.md


总览

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-wechat/phxpaxos

phxrpc项目地址: http://github.com/tencent-wechat/phxrpc

colib项目地址: http://github.com/tencent-wechat/libco


1. PhxSQL常用命令

目前在BI广州机房druid测试环境中的monitor00(100.0.0.1)、monitor01(100.0.0.2)和monitor02(100.0.0.3)上安装了PhxSQL。因为集群的高一致性,没有特地说明的地方,任选三台中的一台ip即可。
安装路径basedir = /apps/phxsql; 
数据路径datadir = /apps/phxsqldata;
编译后的安装包为 /apps/phxsql-0.8.0.tar.gz

(1). 安装及初始化phxsql

如果出现connect machine IP fail,则该IP下的二进制没有在运行;

如果出现其他异常,而不出现add ip IPXXX to master done,则可认为初始化过程中出现异常,可选择重新安装;

如果出现 machine xxx has been set, 则集群已经被初始化,但IP2,IP3没有加入到集群中。此时可通过成员管理中的添加成员把IP2,IP3加入到集群,或者重新安装。


 

(2). 查看命令及相关参数,进入 phxsql/tools

如python2.7 install.py --help

optional arguments:
-i IP_LIST, --ip_list IP_LIST
IPs of group hosts, split by ','
-p PHXSQLPROXY_PORT, --phxsqlproxy_port PHXSQLPROXY_PORT
phxsqlproxy for mysql client to connect
-g AGENT_PORT, --agent_port AGENT_PORT
agent for mysql to learn binlog
-y MYSQL_PORT, --mysql_port MYSQL_PORT
mysql port for phxsqlproxy to connect
-P PHXBINLOGSVR_PORT, --phxbinlogsvr_port PHXBINLOGSVR_PORT
phxbinlogsvr port
-a PAXOS_PORT, --paxos_port PAXOS_PORT
port for paxos protocol to communicate
-s SKIP_DATA, --skip_data SKIP_DATA
do not delete datas in data_dir
-f DATA_DIR, --data_dir DATA_DIR
where phxbinlogsvr and paxos log been stored


 

(3). 在保留当前数据库的前提下,重新安装

 

(4). 查看集群状态,进如 phxsql/sbin

 

(5). PhxSQL运营管理工具phxbinlogsvr_tools_phxrpc,可以用来初始化PhxSQL、获取成员列表等。

 

(6). 通过Phxsqlproxy登录PhxSQL的命令行客户端

 

(7). 增加PhxSQL新用户,即增加管理员


2. PhxSQL编译

(1). 安装依赖库

(2). 中文详细编译手册,按官方文档一步一步编译

(3). 生成安装文件

1). 在PhxSQL目录下执行sh autoinstall.sh && make && make install

2). 若想打包二进制运行包(集群运行时所需要的所有文件和配置)make package

3). install完成后,二进制会生成到PhxSQL目录下的sbin目录,运行所需要的相关文件和配置会安装到PhxSQL目录下的install_package目录。打包二进制运行包会把install_package进行tar格式的打包,并生成phxsql.tar.gz。若想更改install的安装目录,可在sh
autoinstall.sh 后加入-prefix=路径

(4). 将安装文件分发到需要安装PhxSQL的机器上,如monitor00、monitor01、monitor02,可用salt分发。


3. PhxSQL部署

PhxSQL需要在2台或以上的机器集群上运行(建议集群内机器数目n>=3 且 n为奇数)。

(1). my.cnf

        MySQL的配置,请根据你的业务需求进行修改(安装前请修改
tools/etc_template/my.cnf
,安装后请修改
etc/my.cnf
)。

         安装前将my.cnf中的 user=mysql 改为 user=druid,以免报错“chown: invalid user: `user:mysql’”。

(2). 中文部署手册,按官方步骤一步一步部署

如果安装失败,请查看所需端口是否被占用。


4. PhxSQL成员管理

PhxSQL成员管理官方文档 


5. 迁移数据

(1). 从现有MySQL数据库迁移

从现有MySQL数据库迁移—官方文档

虽然集群之前使用的MySQL(5.6.32)与PhxSQL使用的percona(5.6.31-77.0)都是MySQL5.6,迁移过程中使用如下命令会报错,很可能是兼容性问题。

 

(2). 导出再导入

将pro环境中的MySQL替换为PhxSQL

1). 导出数据

2). 将druid.sql打包为druid-db-20161222.tar.gz,该文件很大,如果不打包会salt上传失败

3). 分发打包后的sql文件到monitor00

4). 导入PhxSQL数据库

6). 修改druid配置文件中_common/common.runtime.properties

7). 重启druid所有服务


附录

微信开源PhxSQL:高可用、强一致的MySQL集群

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

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

官方wiki
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: