OneProxy是一款数据库中间件,与目前市面上的TDDL、MySQL-Proxy属于同类型产品。我们坚持研发OneProxy是基于如下几点考虑:
1. 我们不想被某一种开发语言绑定:TDDL绑定了客户必须使用JAVA做开发语言,而且整个一套系统的正常运行非常依赖于强大的配置推送中心和雄厚的运维团队;
2. 使用上必须透明: MySQL-Proxy实现了MySQL协议,使得其看起来就像一个MySQL数据库一样,因此客户可以使用任何他们喜欢的语言来操作数据库。因此OneProxy借鉴了其在协议上的实现。
3. 我们需要更稳定,更多功能的中间件: 令人痛心的是,官方对这款产品的重视度好像不够。从2007年第一版推出到2015年都快八年了,仍未达到GA状态。
我们的OneProxy是楼方鑫倾力打造的一款产品,里面的每一行代码都流淌着丰富的经验。可以说,OneProxy生而为实战。
那我在这里先向大家丢出一个最常遇见的问题,如果数据库挂掉怎么办?
1. 手动改应用配置,太low;就算这不是太low的事情,但是当你有20个应用要手动改呢?
2. 虚拟IP自动漂移,优雅的方案,但是需要运维人员的悉心配合;
3. 何不试试OneProxy内置的数据库切换方案,DBA一手搞定。
不过别着急,今天我们就一起先搭建下这个系统。
1. 手上有一台linux 64bit的机器
2. 从百度云盘上下载安装文件 http://pan.baidu.com/s/1mgJpukg#path=%252FOneSQL%252FOneProxy
3. 安装
解压到指定目录
mv oneproxy-rhel5-linux64* /usr/local/
tar zxvf oneproxy-rhel5-linux64*
更改启动文件
cd oneproxy/
cat demo.sh
############################################################
#/bin/bash
#
export ONEPROXY_HOME=/data/oneproxy
if [ -f ${ONEPROXY_HOME}/oneproxy.pid ]; then
kill -9 `cat ${ONEPROXY_HOME}/oneproxy.pid`
fi
sleep 2
# valgrind --leak-check=full --show-reachable=yes \
${ONEPROXY_HOME}/oneproxy --proxy-address=:3307 --proxy-extra-address=:3308 \
--proxy-master-addresses=192.168.1.119:3306@default \
--proxy-user-list=test/[email protected] \
--proxy-part-tables=${ONEPROXY_HOME}/part.txt \
--proxy-charset=gbk_chinese_ci --proxy-found-rows \
--proxy-group-policy=default:master-only \
--event-threads=6 --proxy-group-security=default:0 \
--log-file=${ONEPROXY_HOME}/oneproxy.log \
--pid-file=${ONEPROXY_HOME}/oneproxy.pid
############################################################
更改后
############################################################
#/bin/bash
#
export ONEPROXY_HOME=/usr/local/oneproxy
if [ -f ${ONEPROXY_HOME}/oneproxy.pid ]; then
kill -9 `cat ${ONEPROXY_HOME}/oneproxy.pid`
fi
sleep 2
# valgrind --leak-check=full --show-reachable=yes \
${ONEPROXY_HOME}/oneproxy --proxy-address=:3307 --proxy-extra-address=:3308 \
--proxy-master-addresses=192.168.15.128:3306@default \
--proxy-user-list=test/1378[email protected] \
--proxy-part-tables=${ONEPROXY_HOME}/part.txt \
--proxy-charset=gbk_chinese_ci --proxy-found-rows \
--proxy-group-policy=default:master-only \
--event-threads=6 --proxy-group-security=default:0 \
--log-file=${ONEPROXY_HOME}/oneproxy.log \
--pid-file=${ONEPROXY_HOME}/oneproxy.pid
############################################################
4. 启动
sh ./demo.sh
检查启动输出
cat oneproxy.log
##############################
2015-05-04 19:38:15: (critical) plugin oneproxy 5.4.1-20150425 started
2015-05-04 19:38:15: (critical) valid config checksum = 88429892
##############################
5. 检查后端数据库节点状态
进入管理端口(默认端口为4041)
mysql -uadmin -pOneProxy -P4041 --protocol=TCP
然后键入
list backend;
可以看到输出为:
+------+---------------------+-----------+--------+----------+---------+
| INDX | ADDRESS | TYPE | STATUS | REQUESTS | GROUP |
+------+---------------------+-----------+--------+----------+---------+
| 1 | 192.168.15.128:3306 | RW/Master | UP | 0 | default |
+------+---------------------+-----------+--------+----------+---------+
6. 增加slave节点
修改配置文件
###################################################
#/bin/bash
#
export ONEPROXY_HOME=/usr/local/oneproxy
if [ -f ${ONEPROXY_HOME}/oneproxy.pid ]; then
kill -9 `cat ${ONEPROXY_HOME}/oneproxy.pid`
fi
sleep 2
# valgrind --leak-check=full --show-reachable=yes \
${ONEPROXY_HOME}/oneproxy --proxy-address=:3307 --proxy-extra-address=:3308 \
--proxy-master-addresses=192.168.15.128:[email protected] \
--proxy-slave-addresses=192.168.15.128:[email protected] \
--proxy-user-list=test/[email protected] \
--proxy-part-tables=${ONEPROXY_HOME}/part.txt \
--proxy-charset=gbk_chinese_ci --proxy-found-rows \
--proxy-group-policy=default:master-only \
--event-threads=6 --proxy-group-security=default:0 \
--log-file=${ONEPROXY_HOME}/oneproxy.log \
--pid-file=${ONEPROXY_HOME}/oneproxy.pid
###################################################
重启OneProxy
sh ./demo.sh
7. 检查后端数据库节点状态
方法同步骤5
输出结果为
+------+---------------------+-----------+--------+----------+---------+
| INDX | ADDRESS | TYPE | STATUS | REQUESTS | GROUP |
+------+---------------------+-----------+--------+----------+---------+
| 1 | 192.168.15.128:3306 | RW/Master | UP | 0 | default |
| 2 | 192.168.15.128:3310 | RO/Slave | UP | 0 | default |
+------+---------------------+-----------+--------+----------+---------+
经过以上七步,相信你已经会部署和简单使用我们的系统了。
本文就这样结束了,如果你想找到我刚才提出的那个问题的答案的话,请转到我们的官方网站的这一页(http://www.onexsoft.com/oneproxy/oneproxy-auto-failover ) 来看看。