oneproxy mysql_利用oneproxy部署mysql数据库的读写分离

该实验详细介绍了如何在CentOS6.6环境下,通过oneproxy实现MySQL(此处使用MariaDB)数据库的读写分离。实验涉及关闭防火墙和SELinux,配置主从复制,安装并配置oneproxy服务器,设置代理用户,以及验证数据流量的分布。在oneproxy服务器上启动服务后,通过抓包工具确认写操作在主节点执行,读操作在从节点负载均衡。
摘要由CSDN通过智能技术生成

实验系统:CentOS 6.6_x86_64

实验前提:防火墙和selinux都关闭

实验说明:本实验共有4台主机,IP分配如拓扑

实验软件:mariadb-10.0.20  oneproxy-rhel5-linux64-v5.6-ga

下载地址:http://pan.baidu.com/s/1jGpL2o2

实验拓扑:

688c86ab1aa4955ef2cedf27357355f7.png

注意:本实验是之前mysql-proxy实验的拓展,因此大部分环境及设定是相同的,其中一、二步这里不再重复,具体请参考:利用mysql-proxy进行mysql数据库的读写分离

一、准备工作

二、配置主从复制

三、安装oneproxy

1.此实验中19.79为onproxy服务器,所以软件安装在此主机上:

48304ba5e6f9fe08f3fa1abda7d326ab.png

tar xf oneproxy-rhel5-linux64-v5.6-ga.tar.gz -C /usr/local/

cd /usr/local/oneproxy

vim demo.sh

---------------------------------------------------------------->

#/bin/bash

#

export ONEPROXY_HOME=/usr/local/oneproxy

# valgrind --leak-check=full --show-reachable=yes \

${ONEPROXY_HOME}/oneproxy --keepalive \ //自动检查和重起OneProxy服务

--proxy-address=192.168.19.79:3306 \ //Proxy Server第一个监听地址

--admin-address=192.168.19.79:4041 \ //管理端口地址

--proxy-master-addresses=192.168.19.66:3306@server1 \ //Master节点地址(可写入节点),其中@后面是“Server Group”的名字,如果不指定,则默认为“default”

--proxy-slave-addresses=192.168.19.74:3306@server1 \ //Slave节点地址(可读取节点)

--proxy-slave-addresses=192.168.19.76:3306@server1 \

--proxy-user-list=test/14B1772BA9874974E6ECEA0745EE774930E2EFA3 \ //Proxy用户列表(用户名/口令),进行完第2步之后回来配置

--proxy-part-tables=${ONEPROXY_HOME}/part.txt \

--proxy-found-rows \

--event-threads=4 \ //OneProxy的工作线程数

--proxy-group-policy=server1:2 \ //定义MySQL集群的路由访问策略,这里配置的是从Slave读取,如果Slave端不可用,则从Master端读取

--proxy-group-security=server1:0 \ //定义MySQL集群的安全访问策略

--proxy-memory-db=root/@::test \

--proxy-memory-engine \

--proxy-sql-autosave=${ONEPROXY_HOME}/sql_firewall.sql \

--log-file=${ONEPROXY_HOME}/oneproxy.log \

--pid-file=${ONEPROXY_HOME}/oneproxy.pid

48304ba5e6f9fe08f3fa1abda7d326ab.png

2.查看密码字符并配置:

48304ba5e6f9fe08f3fa1abda7d326ab.png

chmod +x demo.sh

./demo.sh

mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041 //进入管理接口

-------------------------------------------------------------------->

passwd 'redhat'; //查看密码字符,并写入demo.sh中

+--------+------------------------------------------+

| TEXT | PASSWORD |

+--------+------------------------------------------+

| redhat | 14B1772BA9874974E6ECEA0745EE774930E2EFA3 |

+--------+------------------------------------------+

48304ba5e6f9fe08f3fa1abda7d326ab.png

3.在master上创建测试用户:

/usr/local/mysql/bin/mysql

----------------------------------------------->

GRANT ALL ON *.* TO 'test'@'192.168.19.%' IDENTIFIED BY 'redhat'; //这里要和demo.sh中的Proxy用户列表信息保持一致

FLUSH PRIVILEGES;

4.回到oneproxy服务器启动进程:

killall -9 oneproxy //先清理掉之前的进程

./demo.sh

tail -f oneproxy.log //查看日志

b33bf6299a83074a36bd557cb0a91c2a.png

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041

----------------------------------------------------------------->

LIST BACKEND;

+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+

| INDX | ADDRESS | TYPE | STATUS | MARKUP | REQUESTS | DEGREE | GROUP | IS_M | IS_S | MFile | MOffset | DFile | DOffset | RFile | ROffset | IO | SQL | Seconds |

+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+

| 1 | 127.0.0.1:3306 | RW/Master | UP | 0 | 0 | 0 | | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |

| 2 | 192.168.19.66:3306 | RW/Master | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |

| 3 | 192.168.19.74:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |

| 4 | 192.168.19.76:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |

+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+

48304ba5e6f9fe08f3fa1abda7d326ab.png

a62ed93f4d9ffe41a1323bf64fb0f50d.png

5.分别在三台mariadb服务器上抓包:

master:

tcpdump -i eth0 -nn -XX ip dst 192.168.19.66 and tcp dst port 3306

slave1:

tcpdump -i eth0 -nn -XX ip dst 192.168.19.74 and tcp dst port 3306

slave2:

tcpdump -i eth0 -nn -XX ip dst 192.168.19.76 and tcp dst port 3306

6.在oneproxy上进行数据库创建及读取:

mysql -utest -predhat -h192.168.19.79 //连接到oneproxy

数据库命令这里不再写出,大家可以从图片可以看出,所有写操作都在master上进行,读操作被负载均衡至slave上。

93f40608e1f7c7bab9a05ec2726e82e6.png

bd37402538821222d6c2319418183887.png

1c3d163fbe163624cbac48ef70800835.png

6fa3a9eb22a7243cac142966e6af106e.png

50562ff7a791ac8bbceb857fbc176e91.png

c5a70dab363c4fdf2edcb57beb17672e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值