千家信息网

如何在OneProxy的基础上实行MySQL读写分离与负载均衡

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关如何在OneProxy的基础上实行MySQL读写分离与负载均衡,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介Part1:写在最前On
千家信息网最后更新 2026年11月02日如何在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 ~]# 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。主从的构建不是本文的重点,需要的可移步:

如何快速使用mysqlreplicate搭建MySQL主从

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/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} ]; 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=1esacexit $RETVAL

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

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

[root@HE4 oneproxy]# cd bin/[root@HE4 bin]# lsmysqlpwd oneproxy[root@HE4 bin]# ./mysqlpwd MANAGER1C6D087BA5D2607A27DECB2F2AFE247E911E877A

编辑proxy.cnf中的内容

[root@HE4 conf]# cat proxy.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 = OneProxy Monitor

Part4:启动Oneproxy

[root@HE4 oneproxy]# ./demo.sh[root@HE4 oneproxy]# ./oneproxy.service restartStopping OneProxy ... [ OK ]Starting OneProxy ... [ 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] Using a password on the command line interface can be insecure.+------------+| @@hostname |+------------+| HE1 |+------------+[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.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 -h292.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 -h292.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 -h292.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 -h292.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 -h292.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作为写服务器也没有问题。

关于"如何在OneProxy的基础上实行MySQL读写分离与负载均衡"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

均衡 主从 目录 数据 环境 篇文章 基础 内容 分布式 分库 分表 名单 数据库 文件 更多 状态 用户 简介 脚本 软件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 喔噻互联网科技有限公司 互联网科技工作委员会毛军 宜安科技 互联网金融 腾讯科技 互联网女皇 奇士达互联网科技 海南购全球互联网科技 深圳市运趣互联网科技有限公司 科技与互联网哪个更好 现代互联网科技股 互联网科技创新服务 全球顶尖互联网科技公司 青海科技产业互联网发展 互联网科技大赛获奖感言 区块链结合互联网科技 互联网企业科技类企业如何做账 互联网与数字科技关系 盐城市攀科互联网科技有限公司 互联网科技大会大佬 东风日产互联网科技公司叫什么 新华互联网科技学校 互联网科技公司华为 深圳期待互联网科技 山东吉时兔互联网科技有限公司 互联网科技寓意 阿里互联网科技公司 黑云互联网科技有限公司 广州梦谷互联网科技有限公司领导 北京品多多互联网科技有限公司 每日互联网科技新闻
0