gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章在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 。

?
1
2
3
[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。主从的构建不是本文的重点,需要的可移步:

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

Part3:配置Oneproxy 。

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

?
1
2
3
4
5
6
[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时所在的目录 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[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对密码进行加密 。

?
1
2
3
4
5
6
7
8
9
[root@HE4 oneproxy]# cd bin/
 
[root@HE4 bin]# ls
 
mysqlpwd oneproxy
 
[root@HE4 bin]# ./mysqlpwd MANAGER
 
1C6D087BA5D2607A27DECB2F2AFE247E911E877A

编辑proxy.cnf中的内容 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[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 。

?
1
2
3
4
5
6
7
[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的管理页面 。

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[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还具有分库分表功能,今后会进一步研究。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.51cto.com/suifu/1884673 。

最后此篇关于在OneProxy的基础上实行MySQL读写分离与负载均衡的文章就讲到这里了,如果你想了解更多关于在OneProxy的基础上实行MySQL读写分离与负载均衡的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com