如何在OneProxy的基础上实行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~]#tarxvfoneproxy-rhel5-linux64-v5.8.5-ga.tar.gz[root@HE4oneproxy]#lsbinconfdemo.shlogoneproxy.serviceREADMEtestadmin.sqltestautocommit.sqltestproxy.sqltrantest.sql
Part2:构建主从环境
本文的架构是一主两从,HE3作为Master,HE1,HE2作为Slave。主从的构建不是本文的重点,需要的可移步:
如何快速使用mysqlreplicate搭建MySQL主从
Part3:配置Oneproxy
目录中的demo是初次启动脚本,oneproxy.service是启停脚本,在新版的oneproxy中,conf文件夹的proxy.cnf为配置文件
[root@HE4oneproxy]#catdemo.sh#/bin/bash#exportONEPROXY_HOME=/root/oneproxy#valgrind--leak-check=full\${ONEPROXY_HOME}/bin/oneproxy--defaults-file=${ONEPROXY_HOME}/conf/proxy.conf
我们将demo.sh中的ONEPROXY_HOME变更为解压oneproxy时所在的目录
[root@HE4oneproxy]#catoneproxy.service#!/bin/bash#chkconfig:-3021#description:OneProxyservice.#SourceFunctionLibrary./etc/init.d/functions#OneProxySettingsONEPROXY_HOME=/root/oneproxyONEPROXY_SBIN="${ONEPROXY_HOME}/bin/oneproxy"ONEPROXY_CONF="${ONEPROXY_HOME}/conf/proxy.conf"ONEPROXY_PID="${ONEPROXY_HOME}/log/oneproxy.pid"RETVAL=0prog="OneProxy"start(){echo-n$"Starting$prog..."daemon$ONEPROXY_SBIN--defaults-file=$ONEPROXY_CONFRETVAL=$?echo}stop(){echo-n$"Stopping$prog..."if[-e${ONEPROXY_PID}];thendaemonkill-INT$(cat${ONEPROXY_PID})RETVAL=$?fiecho}restart(){stopsleep1start}case"$1"instart)start;;stop)stop;;restart)restart;;*)echo$"Usage:$0{start|stop|restart}"RETVAL=1esacexit$RETVAL
同时,将oneproxy.service中的ONEPROXY_HOME也改为解压时的目录
进入oneproxy中的bin目录,使用mysqlpwd对密码进行加密
[root@HE4oneproxy]#cdbin/[root@HE4bin]#lsmysqlpwdoneproxy[root@HE4bin]#./mysqlpwdMANAGER1C6D087BA5D2607A27DECB2F2AFE247E911E877A
编辑proxy.cnf中的内容
[root@HE4conf]#catproxy.conf[oneproxy]keepalive=1event-threads=4proxy-group-policy.2=test:read-slavelog-file=log/oneproxy.logpid-file=log/oneproxy.pidlck-file=log/oneproxy.lckproxy-auto-readonly=1proxy-forward-clientip=1proxy-trans-debug=1proxy-address=:3307mysql-version=5.7.16proxy-master-addresses.1=192.168.1.250:3306@testproxy-slave-addresses.2=192.168.1.248:3306@testproxy-slave-addresses.3=192.168.1.249:3306@testproxy-user-list=sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@testproxy-user-group=test:sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@testproxy-part-template=conf/template.txtproxy-part-tables.1=conf/part.txtproxy-part-tables.2=conf/part2.txtproxy-part-tables.3=conf/cust1.txtproxy-charset=utf8_binproxy-secure-client=127.0.0.1#proxy-license=32C54560E06EFF3Eproxy-httpserver=:8080proxy-httptitle=OneProxyMonitor
Part4:启动Oneproxy
[root@HE4oneproxy]#./demo.sh[root@HE4oneproxy]#./oneproxy.servicerestartStoppingOneProxy...[OK]StartingOneProxy...[OK]
测试
Part1:Oneproxy状态校验
浏览器打开192.168.1.251:8080端口能够看到oneproxy的管理页面
这里可以看到主从的各种状态信息。
Part2:负载均衡与读写分离校验
[root@HE1~]#mysql-usys_admin-pMANAGER-h292.168.1.251-P3307-e"select@@hostname;"mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.+------------+|@@hostname|+------------+|HE1|+------------+[root@HE1~]#mysql-usys_admin-pMANAGER-h292.168.1.251-P3307-e"select@@hostname;"mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.+------------+|@@hostname|+------------+|HE2|+------------+[root@HE1~]#mysql-usys_admin-pMANAGER-h292.168.1.251-P3307-e"select@@hostname;"mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.+------------+|@@hostname|+------------+|HE1|+------------+[root@HE1~]#mysql-usys_admin-pMANAGER-h292.168.1.251-P3307-e"select@@hostname;"mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.+------------+|@@hostname|+------------+|HE2|+------------+[root@HE1~]#mysql-usys_admin-pMANAGER-h292.168.1.251-P3307-e"select@@hostname;"mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.+------------+|@@hostname|+------------+|HE1|+------------+[root@HE1~]#mysql-usys_admin-pMANAGER-h292.168.1.251-P3307-e"begin;select@@hostname;commit;"mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.+------------+|@@hostname|+------------+|HE3|+------------+[root@HE1~]#mysql-usys_admin-pMANAGER-h292.168.1.251-P3307-e"begin;select@@hostname;commit;"mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure.+------------+|@@hostname|+------------+|HE3|+------------+
可以看到HE1,HE2两个slave作为负载均衡没有问题,HE3作为写服务器也没有问题。
关于“如何在OneProxy的基础上实行MySQL读写分离与负载均衡”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。