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]# ls
bin 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 Settings
ONEPROXY_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_CONF
RETVAL=$?
echo
}
stop() {
echo -n $"Stopping $prog ... "
if [ -e ${ONEPROXY_PID} ]; then
daemon kill -INT $(cat ${ONEPROXY_PID})
RETVAL=$?
fi
echo
}
restart(){
stop
sleep 1
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|restart}"
RETVAL=1
esac
exit $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 = 32C54560E06EFF3E
proxy-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的管理页面
这里可以看到主从的各种状态信息。
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作为写服务器也没有问题。
——总结——
OneProxy配合MySQL实现读写分离与负载均衡实验构建成功,Oneproxy还具有分库分表功能,今后会进一步研究。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
oneproxy mysql_在OneProxy的基础上实行MySQL读写分离与负载均衡相关推荐
- OneProxy实现MySQL读写分离与负载均衡
Part1:写在最前 OneProxy平民软件完全自主开发的分布式数据访问层,帮助用户在MySQL/PostgreSQL集群上快速搭建支持分库分表的分布式数据库中间件,也是一款具有SQL白名单(防SQ ...
- 基于mycat的mysql_基于Mycat中间件的MySQL读写分离
基于Mycat中间件的MySQL读写分离 简述 mycat是国内开源的数据库中间件,可以实现mysql读写分离和主备热切换,容灾,数据分片等功能. 详情:http://www.mycat.io/ 架构 ...
- mysql oneproxy_利用oneproxy实现mysql读写分离搭建笔记
功能: 1.具有SQL白名单(防SQL注入)及IP白名单功能的SQL防火墙软件 2.数据库故障切换 3.读写分离 4.分库分表 一.下载 oneproxy-rhel5-linux64-v6.0.0-g ...
- 在win8上安装mysql_如何在Win8系统上安装MySQL 5.6
最近发现好多人都想在Win8上安装MySQL,但有些初学者甚至不知道在哪里下载MySQL,大部分都是从百度上搜索其他人或者网站共享的安装包,一般别人共享的包都是.msi的安装包,这种安装包的安装方法就 ...
- 如何在centos中找到安装mysql_如何在CentOS 7上安装MySQL
随着CentOS 7 MySQL的发布,全球最受欢迎的开源关系数据库管理系统在CentOS的存储库中不再可用,而且MariaDB已成为默认的数据库系统. MariaDB是MySQL的向后兼容,二进制插 ...
- atlas mysql_使用Atlas配置MySQL读写分离
Atlas是360团队弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Proxy的一些BUG,并且优化了很多东西.而且安装方便.配置与注释写的都很详细,并且是都是中文,不过从A ...
- nginx+docker同一服务器上部署多个docker实现负载均衡
在提到负载均衡的时候,大多数人都是想着几台服务器甚至几十台服务器组成一个群组 也就是横向拓展服务器来实现负载均衡吧 但是还有一种情况是纵向拓展 也就是当你的项目在一台服务器上占用的资源很少,其实是可以 ...
- java atlas mysql_使用Atlas实现MySQL读写分离+MySQL-(Master-Slave)配置
参考博文: MySQL-(Master-Slave)配置 本人按照博友北在北方的配置已成功 我使用的是 mysql5.6.27版本. 配置中 又进一步对mysql5.6的日志进行了了解 :mysq ...
- practice:在win2008R2上使用(NLB)网络负载均衡
版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关于NLB的官方描述,在搭建NLB群集之前,必须先对NLB的原理进行初步了解 Windows Server 2008 R2 中的网络负载平衡 ( ...
最新文章
- ios 调试的相关内容收集
- mysql引擎机制_关于MySQL中的InnoDB引擎的MVCC机制的理解
- ECharts - 极坐标系下的堆叠柱状图
- csv 导 mysql
- java md5运算_java实现计算MD5
- 解决Redmi 6 pro底部出现黑边问题
- Vijos1240 朴素的网络游戏
- 一行代码实现数组降维去重排序
- 修改FCKEditor实现将图片、文件等保存到数据库
- 高手详解SQL性能优化十条经验
- 硬件加速 | 基于FPGA的深度学习CNN加速器设计(论文复现)
- iTunes更改备份保存路径
- 试着用markdown
- Stochastic Gradient Hamiltonian Monte Carlo论文笔记
- 豆瓣8.9,《数学之美》第三版,让你10分钟爱上数学
- 技术科普丨景深到底是什么
- window.onload和window.document.readystate的探究
- 专访深蓝航天CEO霍亮:做中国版梅林发动机 深耕火箭回收复用赛道
- Android 10 系统屏蔽底部按键 禁止锁屏 禁用横屏
- 关于visual studio下载过慢的问题
热门文章
- navicate连接远程数据库
- java logger 格式_org.apache.log4j.Logger详解
- Ubuntu18.04创建新的系统用户
- 使用JavaScript和D3.js实现数据可视化
- 比机器人更优越的半机械昆虫,颜控党们会接受吗?
- JAVA类与对象(一)----基础概念理解
- Fastlane为iOS带来持续部署
- 译:C#面向对象的基本概念 (Basic C# OOP Concept) 第二部分(封装,抽象,继承)...
- 如何借助vsftpd在Linux上构建安全的FTP服务?
- ONLINE_JUDGE