实验系统:CentOS 6.6_x86_64

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

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

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

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

实验拓扑:

    

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

一、准备工作

二、配置主从复制

三、安装oneproxy

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

tar xf oneproxy-rhel5-linux64-v5.-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: \ //Proxy Server第一个监听地址
--admin-address=192.168.19.79: \ //管理端口地址
--proxy-master-addresses=192.168.19.66:@server1 \ //Master节点地址(可写入节点),其中@后面是“Server Group”的名字,如果不指定,则默认为“default”
--proxy-slave-addresses=192.168.19.74:@server1 \ //Slave节点地址(可读取节点)
--proxy-slave-addresses=192.168.19.76:@server1 \
--proxy-user-list=test/14B1772BA9874974E6ECEA0745EE774930E2EFA3 \ //Proxy用户列表(用户名/口令),进行完第2步之后回来配置
--proxy-part-tables=${ONEPROXY_HOME}/part.txt \
--proxy-found-rows \
--event-threads= \ //OneProxy的工作线程数
--proxy-group-policy=server1:2 \ //定义MySQL集群的路由访问策略,这里配置的是从Slave读取,如果Slave端不可用,则从Master端读取
--proxy-group-security=server1: \ //定义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

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

chmod +x demo.sh
./demo.sh
mysql -uadmin -pOneProxy -h192.168.19. --port= //进入管理接口
-------------------------------------------------------------------->
passwd 'redhat'; //查看密码字符,并写入demo.sh中
+--------+------------------------------------------+
| TEXT | PASSWORD |
+--------+------------------------------------------+
| redhat | 14B1772BA9874974E6ECEA0745EE774930E2EFA3 |
+--------+------------------------------------------+

  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 - oneproxy           //先清理掉之前的进程
./demo.sh
tail -f oneproxy.log //查看日志

    

mysql -uadmin -pOneProxy -h192.168.19. --port=
----------------------------------------------------------------->
LIST BACKEND;
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
| INDX | ADDRESS | TYPE | STATUS | MARKUP | REQUESTS | DEGREE | GROUP | IS_M | IS_S | MFile | MOffset | DFile | DOffset | RFile | ROffset | IO | SQL | Seconds |
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
| | 127.0.0.1: | RW/Master | UP | | | | | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| | 192.168.19.66: | RW/Master | UP | | | | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| | 192.168.19.74: | RO/Slave | UP | | | | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
| | 192.168.19.76: | RO/Slave | UP | | | | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
+------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+

    

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

    master:

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

    slave1:

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

    slave2:

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

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

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

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

    

    

    

    

    

    

  至此,实验成功,谢谢!如有问题,请联系我,QQ:82800452

利用oneproxy部署mysql数据库的读写分离的更多相关文章

  1. 利用mysql-proxy进行mysql数据库的读写分离

    实验系统:CentOS 6.6_x86_64 实验前提:防火墙和selinux都关闭 实验说明:本实验共有4台主机,IP分配如拓扑 实验软件:mariadb-10.0.20 mysql-proxy-0 ...

  2. 如何轻松实现MySQL数据库的读写分离和负载均衡?

    配置好了 Mysql 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡.读写分离和负载均衡是 Mysql 集群的基础需求,MaxScale 就可以帮着 ...

  3. 基于amoeba实现mysql数据库的读写分离/负载均衡

    一.Amoeba的简述:[来自百度百科]      Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请 ...

  4. Mysql数据库的读写分离

    读写分离,即在主数据库中进行写操作(也可以进行增.删.改操作),在从数据库中进行读操作.在正常情况下,我们对主数据库进行的是增.删.改.查操作,数据库的写入时间比较长,而查询时间短,所以为了提高数据库 ...

  5. springboot多数据源配合docker部署mysql主从实现读写分离

    本篇主要有两部分: 1.使用docker部署mysql主从 实现主从复制 2.springboot项目多数据源配置,实现读写分离 一.使用docker部署mysql主从 实现主从复制 此次使用的是wi ...

  6. 使用docker 实现MySQL主从同步/读写分离

    1. 利用 docker 实现 mysql 主从同步 / 读写分离 为了保证数据的完整和安全,mysql 设计了主从同步,一个挂掉还可以用另个.最近重构论坛,想来改成主从吧.担心失误,就先拿 dock ...

  7. docker-compose.yml样例(mysql主从+mycat读写分离)

    Docker-compose.yml文件示例 1.mysql主从复制的docker-compose.yml文件 # cat docker-compose.yml version: '2' # 这个ve ...

  8. 利用MySQL Router构建读写分离MGR集群

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 部署MySQL Router 2. 启动mysqlrouter服务 3. 确认读写分离效果 4. 确认只读负载 ...

  9. MySQL搭建主从数据库 实现读写分离

    首先声明,实际生产中,网站为了提高用户体验,性能等,将数据库实现读写分离是有必要的,我们让主数据库去写入数据,然后当用户查询的时候,然后在从数据库读取数据,故能减轻数据库的压力,实现良好的用户体验! ...

随机推荐

  1. 做一个会使用PS的前端开发

    做前端开发的需不需要PS 记得在之前的老东家做某一个系统开发,当时正在做界面开发,发现界面还需要添加几个图标,于是把这个需求反馈给了项目经理.过了十几分钟,项目经理跑过来告诉我:产品部的UI设计人员( ...

  2. Xamarin.Android和UWP之MVVM的简单使用(一)

    0x01 前言 就目前而言,MVVM可以说是挺流行的,无论是web端还是移动端,web端的主要代表angularjs,avalonjs等, 移动端(xamarin,uwp)的代表应该是mvvmligh ...

  3. 使用VS Code开发 调试.NET Core 应用程序

    使用VS Code开发 调试.NET Core RC2应用程序,由于.NET Core 目前还处于预览版. 本文使用微软提供的示例进行开发及调试. https://github.com/aspnet/ ...

  4. 学习笔记(二)——MVC扩展(渲染视图)

    如何渲染视图? 我以近乎的视图引擎为例总结了一下,近乎中的ThemedViewEngine类,就是重写后的的视图引擎.ThemedViewEngine类主要对FindPartialView和FindV ...

  5. MVC依赖性注入概述

    MVC框架之所以如此受欢迎的原因之一就是它十分注意支持关注分离,使各个功能部件尽量能够相互独立.今天我们就来看看MVC4如何使用DI方法实现一些组件的独立,使本来结合紧密的部件,松耦合.我现在所说的对 ...

  6. IOS学习笔记之获取Plist文件读取数据

    @property(nonatomic,strong) NSArray *pic; //创建数组属性 @property(nonatomic,assign) int index; //创建索引属性 @ ...

  7. js设置、获取单值cookie和多值cookie

    js设置.获取单值cookie和多值cookie,代码如下: var CookieUtil = (function () { var Cookie = function () { // 获取单值coo ...

  8. 【JAVA并发编程实战】4、CountDownLatch

    这是一个计数锁,说白了,就是当你上锁的时候,只有计数减少到0的时候,才会释放锁 package cn.xf.cp.ch05; public class TaskRunable implements R ...

  9. 【夯实Mysql基础】mysql explain执行计划详解

    原文地址   1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询.   2).select_type列常见的有: A ...

  10. Maven命令行使用:mvn clean package(打包)

    先把命令行切换到Maven项目的根目录,比如:/d/xxxwork/java/maven-test,然后执行命令:  mvn clean package 执行结果如下: [INFO] Scanning ...