phxsql安装小记
- 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
安装环境(不做强制要求):
OS: centos 7 1503
server: 3台
phxsql版本:0.8.0
gcc: 4.8.5
1.依赖安装,先安装epel-release,再把下面的依赖一次性安装
- automake
- libtool
- ncurses
- readline
- zlib
- libstdc++* (重要包,本人在此困住两小时)
一键编译
- 通过
git clone
或者直接下载release源码包。(本文主要写的) - 直接运行PhxSQL源码根目录
build.sh
,即可一键完成编译(需要保证网络通畅)。
如一键编译出现问题,请参考以下的手工编译流程。
获取源码
git clone --recursive https://github.com/tencent-wechat/phxsql.git [PhxSQL放置目录]
使用
--recursive
参数可以同时获得所依赖的第三方库glog
,leveldb
,protobuf
源码,也同时获得所依赖的我们自己研发的库phxpaxos
,phxrpc
,colib
。也可自行下载这些源码,然后自行拷贝或者通过软链的形式放置到third_party目录。
自动安装所有依赖的第三方库
- 进入
third_party
目录。 ./autoinstall.sh
- 如果安装成功会看到
all done.
字眼, 则可以直接跳到编译PhxSQL步骤。
如脚本执行失败,则检查编译失败在哪一个第三方库,尝试解决,如仍然无法安装成功,则按以下步骤自行安装第三方库。
编译leveldb
我们的编译流程是基于leveldb 1.19版本,如果你自行下载了其他版本,可能有编译上的不同。
- 进入
third_party/leveldb
目录。 make
,编译完成后会在out-static
目录生成libleveldb.a
文件。mkdir lib
建立一个lib目录,然后cd lib;ln -s ../out-static/libleveldb.a libleveldb.a
建立一个软链,PhxSQL通过lib这个目录来寻址静态库。
编译protobuf
- 进入
third_party/protobuf
目录。 ./autogen.sh
(这一步需要去googlecode拉取gmock源码,但已被墙,如没有vpn的筒子可自行下载gmock代码,或直接cp -r ../phxpaxos/third_party/gmock gmock
,如果提示缺少autoreconf
和AC_PROG_LIBTOOL
则需先安装automake
和libtool
)./configure CXXFLAGS=-fPIC --prefix=[当前目录绝对路径]
, 这一步CXXFLAGS
和--prefix
都必须设置对。make && make install
- 编译完成后检查是否在当前目录成功生成
bin
,include
,lib
三个子目录。
编译protobuf也可以直接参考官方文档 protobuf编译方法
编译glog
- 进入
third_party/glog
目录。 ./configure CXXFLAGS=-fPIC --prefix=[当前目录绝对路径]
, 这一步CXXFLAGS
和--prefix
都必须设置对。make && make install
- 编译完成检查是否在当前目录成功生成
lib
子目录,并检查在lib
目录是否成功生成静态库libglog.a
.
编译colib
- 进入
third_party/colib
目录。 make
- 编译完成检查是否在当前目录成功生成
lib
子目录,并检查在lib
目录是否成功生成静态库libcolib.a
.
编译phxpaxos
- 进入
third_party/phxpaxos/third_party
目录。 - 可以看到phxpaxos也依赖了
glog
,leveldb
,protobuf
这三个库,但由于我们刚才已经编译好了,所以这里无需再进行编译。 rm -rf glog leveldb protobuf
把这几个目录删掉。ln -s ../../glog glog
直接软链到刚才编译好的glog目录。ln -s ../../leveldb leveldb
ln -s ../../protobuf protobuf
cd ..
回到phxpaxos根目录。./autoinstall.sh
make && make install
.- 编译完成后检查是否在当前目录成功生成
lib
子目录,并检查在lib
目录是否成功生成静态库libphxpaxos.a
. cd plugin; make && make install
编译paxos plugin.- 编译成功检查上层
lib
目录下是否成功生成静态库libphxpaxos_plugin.a
.
关于独立phxpaxos的编译,可参考PhxPaxos中文详细编译手册
编译phxrpc
- 进入
third_party/phxrpc/third_party
目录。 - 可以看到phxrpc也依赖了
protobuf
这个库,但由于我们刚才已经编译好了,所以这里无需再进行编译。 rm -rf protobuf
把这个目录删掉。ln -s ../../protobuf protobuf
cd ..
回到phxrpc根目录。make
- 编译完成后检查是否生成
lib
子目录,并检查lib
目录下是否生成静态库libphxrpc.a
.
关于独立phxrpc的编译,可参考PhxRPC中文详细编译手册
编译PhxSQL
- 下载
percona
源码percona-server-5.6.31-77.0.tar.gz,请注意只能使用percona-server-5.6_5.6.31-77.0版本。 - 解压源码到PhxSQL根目录,并更名为
percona
. - 进入PhxSQL根目录。
./autoinstall.sh
(如果提示Curses library not found
和Cannot find system readline libraries
则需先安装这两个库再执行命令。make && make install
(该步骤编译时间较长,请耐心等待)
心得总结:其实最重要的就是把前面的依赖包装好.后面的就是时间长点.总的来说安装过程还挺顺利.
phxsql安装小记的更多相关文章
- Python cx_Oracle 安装小记
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,Python cx_Oracle 安装小记 SQLAlchemy 是 Pytho ...
- Kong网关介绍与安装小记
本文主要为kong安装小记,系统环境为centos 6.7 本文转载请注明出处 —— xiaoEight 介绍 Kong 是在客户端和(微 ...
- 【转】Ubuntu 18.04安装小记
我的电脑是神舟z7 kp7s1,显卡1060,尝试了Ubuntu的16.04,安装完进入界面总是卡死了,后面换18.04依然无解,和版本无关,而是因为英伟达的显卡问题. 参考了如下这篇文章:Ubunt ...
- YCM 安装小记
layout: post title: YCM 安装小记 半夜,女朋友在那边抱怨购物车的物品秒无货,我这边刚好成功安装了vim上最难装的插件--YouCompleteMe,内心非常激动,于是本着取之于 ...
- JanusGraph 图数据库安装小记 ——以 JanusGraph 0.3.0 为例
由于近期项目中有使用图数据的需求,经过对比,我们选择尝试使用 JanusGraph.本篇小记记录了我们安装 JanusGraph 以及需要一起集成的 Cassandra + Elasticsearch ...
- Elasticsearch5.1.1+ik分词器+HEAD插件安装小记
一.安装elasticsearch 1.首先需要安装好java,并配置好环境变量,详细教程请看 http://tecadmin.net/install-java-8-on-centos-rhel-an ...
- Opentaps安装小记
这周了解了个MES项目需求,于是乎找了些开源项目了解下,有php+mysql写的weberp,配置起来相当方便,下一版webERP_v4.13,往F:\Apache\htdocs\一放,启动F:\Ap ...
- Archlinux 上 Nginx + PHP + Mariadb + DiscuzX2.5 安装小记
因为不好找下载集成服务器工具,而且他们自己又打包了一份 php 之类的程序,本身系统就已经有 php 还有数据库什么的了再搞一份受不了,最后选择了手动配置…… 这是一个在 Archlinux 上手动从 ...
- debian8(jessie)安装小记
其实上周五就想写这篇博客了,一直忙着没时间,虽然也不知道自己这一个星期到底在忙什么.这次我是彻底告别windows了,安装的过程略为艰辛,因为之前习惯了deepin和ubuntu的傻瓜式安装,而deb ...
随机推荐
- 【AC自动机+DP】USACO2012 JAN GOLD_Video Game Combos
[题目大意] 给你个模式串(每个长度≤15,1≤N≤20),串中只含有三种字母.求一长度为K(1≤K≤1000)的字符串,使得匹配数最大(重复匹配计多次),输出最大值. [解题思路] W老师给的题,然 ...
- NDK之HelloWord!
使用工具:Android Studio 2.2.2 1. 配置local.properties添加NDK路径. 效果:当然,你也可以手输写进去. 2. 项目gradle.properties追加 ...
- RowState 介绍
RowState 介绍 从不同位置载入 DataRow 后 RowState 的状态修改, 更改, 删除后的 DataRow.RowState 转化使用 AcceptChanges, RejectCh ...
- oracle: 浅谈sqlnet.ora文件的作用,及SQLNET.AUTHENTICATION_SERVICES设置
关于sqlnet.ora的说明: *****************************************************FROM ORACLE11G DOCS*********** ...
- jquery.mobile 中 collapsible-set collapsible listview 共同布局问题
最近项目用上了jquery.mobile这货,在手机上做点简单的显示.之前只知道有这个框架,没把玩过. 特别是事件绑定方面,相比桌面系统下浏览器用着各种不爽,不得要领. 如下图,在做后台系统时,一般左 ...
- easyui datagrid加载成功之后选定并获取首行数据
//加载成功之后,选定并获取首行数据 onLoadSuccess:function(data){ alert("grid加载成功"); var rows=$('test').dat ...
- flask配置选项中的TRAP_HTTP_EXCEPTIONS会阻止自动跳转
参考:http://www.pythondoc.com/flask/config.html Flask 对象的 config 属性. 这是Flask自身放置特定配置的地方,同时也是flask扩展模块放 ...
- 【前端自动化构建 grunt、gulp、webpack】
参考资料: 用自动化构建工具增强你的工作流程!:http://www.gulpjs.com.cn/ gulp详细入门教程:http://www.ydcss.com/ JavaScript构建(编绎)系 ...
- Spark(六) -- Spark计算模型
整个Spark框架都是基于RDD算子来进行计算的. What is RDD? Resilient Distributed Dataset(RDD),分布式弹性数据集,是Spark上的一个核心抽象 表示 ...
- vue2自定义事件之$emit
父组件: API上的解释不多: https://cn.vuejs.org/v2/api/#vm-emit vm.$emit( event, […args] ) 参数: {string} event [ ...