MySQL数据库之OneProxy实现MySQL读写分离与负载均衡
小标 2019-06-24 来源 : 阅读 1497 评论 0

摘要:本文主要向大家介绍了MySQL数据库之OneProxy实现MySQL读写分离与负载均衡 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之OneProxy实现MySQL读写分离与负载均衡 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

MySQL数据库之OneProxy实现MySQL读写分离与负载均衡

简介

Part1:写在最前

    OneProxy平民软件完全自主开发的分布式数据访问层,帮助用户在MySQL/PostgreSQL集群上快速搭建支持分库分表的分布式数据库中间件,也是一款具有SQL白名单(防SQL注入)及IP白名单功能的SQL防火墙软件。采用与MySQL Proxy一致的反向协议输出模式,对应用非常简单和透明易用,让用户畏惧的数据库故障切换(Failover)、读写分离(Read/Write Split)、分库分表(Horizontal Partitioning)等复杂方案变得极其简单可控!基于Libevent机制实现,单个实例可以实现25万的SQL转发能力,用一个OneProxy节点可以带动整个MySQL集群,为业务发展贡献一份力量。


Part2:环境简介

HE1:192.168.1.248 slave1

HE2:192.168.1.249 slave2

HE3:192.168.1.250 Master

HE4:192.168.1.251 Oneproxy


环境构建

Part1:安装Oneproxy

[root@HE4 ~]# tar xvf oneproxy-rhel5-linux64-v5.8.5-ga.tar.gz[root@HE4 oneproxy]# lsbin  conf  demo.sh  log  oneproxy.service  README  testadmin.sql  testautocommit.sql  testproxy.sql  trantest.sql


Part2:构建主从环境

本文的架构是一主两从,HE3作为Master,HE1,HE2作为Slave。主从的构建不是本文的重点,需要的可移步:

Part3:配置Oneproxy

目录中的demo是初次启动脚本,oneproxy.service是启停脚本,在新版的oneproxy中,conf文件夹的proxy.cnf为配置文件

[root@HE4 oneproxy]# cat demo.sh #/bin/bash#export ONEPROXY_HOME=/root/oneproxy# valgrind --leak-check=full \  ${ONEPROXY_HOME}/bin/oneproxy --defaults-file=${ONEPROXY_HOME}/conf/proxy.conf

我们将demo.sh中的ONEPROXY_HOME变更为解压oneproxy时所在的目录

[root@HE4 oneproxy]# cat oneproxy.service #!/bin/bash# chkconfig: - 30 21# description: OneProxy service.# Source Function Library. /etc/init.d/functions# OneProxy SettingsONEPROXY_HOME=/root/oneproxy
ONEPROXY_SBIN=""${ONEPROXY_HOME}/bin/oneproxy""ONEPROXY_CONF=""${ONEPROXY_HOME}/conf/proxy.conf""ONEPROXY_PID=""${ONEPROXY_HOME}/log/oneproxy.pid""RETVAL=0
prog=""OneProxy""start() {        echo -n $""Starting $prog ... ""
        daemon $ONEPROXY_SBIN --defaults-file=$ONEPROXY_CONFRETVAL=$?echo}stop() {        echo -n $""Stopping $prog ... ""if [ -e ${ONEPROXY_PID} ]; thendaemon kill -INT $(cat ${ONEPROXY_PID})
       RETVAL=$?fiecho}restart(){
        stopsleep 1
        start}case ""$1"" in
  start)
        start        ;;
  stop)
        stop        ;;
  restart)
        restart        ;;
  *)        echo $""Usage: $0 {start|stop|restart}""
        RETVAL=1
esacexit $RETVAL

同时,将oneproxy.service中的ONEPROXY_HOME也改为解压时的目录


进入oneproxy中的bin目录,使用mysqlpwd对密码进行加密

[root@HE4 oneproxy]# cd bin/

[root@HE4 bin]# ls

mysqlpwd  oneproxy

[root@HE4 bin]# ./mysqlpwd MANAGER

1C6D087BA5D2607A27DECB2F2AFE247E911E877A


编辑proxy.cnf中的内容

[root@HE4 conf]# cat proxy.conf [oneproxy]keepalive     = 1
event-threads = 4
proxy-group-policy.2 = test:read-slave
log-file      = log/oneproxy.log
pid-file      = log/oneproxy.pid
lck-file      = log/oneproxy.lck
proxy-auto-readonly = 1
proxy-forward-clientip = 1
proxy-trans-debug = 1
proxy-address            = :3307
mysql-version = 5.7.16
proxy-master-addresses.1 = 192.168.1.250:3306@test
proxy-slave-addresses.2 = 192.168.1.248:3306@test
proxy-slave-addresses.3 = 192.168.1.249:3306@test
proxy-user-list          = sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test
proxy-user-group         = test:sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test
proxy-part-template      = conf/template.txt
proxy-part-tables.1      = conf/part.txt
proxy-part-tables.2      = conf/part2.txt
proxy-part-tables.3      = conf/cust1.txt
proxy-charset            = utf8_bin
proxy-secure-client = 127.0.0.1# proxy-license  = 32C54560E06EFF3Eproxy-httpserver = :8080
proxy-httptitle = OneProxy Monitor


Part4:启动Oneproxy

[root@HE4 oneproxy]# ./demo.sh

[root@HE4 oneproxy]# ./oneproxy.service restart

Stopping OneProxy ...                                      [  OK  ]

Starting OneProxy ...                                      [  OK  ]

测试

Part1:Oneproxy状态校验

浏览器打开192.168.1.251:8080端口能够看到oneproxy的管理页面

MySQL数据库之OneProxy实现MySQL读写分离与负载均衡

这里可以看到主从的各种状态信息。


Part2:负载均衡与读写分离校验

[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e""select @@hostname;""mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+| @@hostname |+------------+| HE1        |+------------+[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e""select @@hostname;""mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+| @@hostname |+------------+| HE2        |+------------+[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e""select @@hostname;""mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+| @@hostname |+------------+| HE1        |+------------+[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e""select @@hostname;""mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+| @@hostname |+------------+| HE2        |+------------+[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e""select @@hostname;""mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+| @@hostname |+------------+| HE1        |+------------+[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e""begin;select @@hostname;commit;""mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+| @@hostname |+------------+| HE3        |+------------+[root@HE1 ~]# mysql -usys_admin -pMANAGER -h192.168.1.251 -P3307 -e""begin;select @@hostname;commit;""mysql: [Warning] Using a password on the command line interface can be insecure.
+------------+| @@hostname |+------------+| HE3        |+------------+

可以看到HE1,HE2两个slave作为负载均衡没有问题,HE3作为写服务器也没有问题。

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved