OneProxy预制多种查询策略,通过OneProxy来查询数据库可以按策略的不同将查询分担到主从数据库中。

准备步骤:

1、在测试之前准备了两台linux(redhat5.4)虚拟机(机器1:bogon,IP:10.122.3.73;机器2:bogon_2,IP:10.122.3.69),分别安装了MySQL5.6.27。

2、按照“1.OneProxy5.8.1新的目录组织结构运行试验”的步骤在bogon安装OneProxy。

3、在bogon和bogon_2的test数据库中创建测试表t,并分别插入一条记录用于区分,数据如下:

在bogon上:

mysql> select

* from t;

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

| a | b|

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

| 1 | bogon |

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

1 row in set

(0.00 sec)

在bogon_2上:

mysql> select

* from t;

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

| a | b|

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

| 1 | bogon_2 |

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

1 row in set

(0.00 sec)

测试内容:

分别测试不同组策略下的OneProxy读写方式,本次测试的组策略有read-failover、read-balance、big-failover。

策略1:read-failover,测试结论是在slave可用时,读操作只会访问slave的节点,如果slave不可用才访问master。

测试步骤:

1、修改配置文件proxy.conf,将两台机器设置成一个group并设置相应访问策略,内容如下:

[oneproxy]

keepalive= 1

event-threads = 4

log-file= log/oneproxy.log

pid-file= log/oneproxy.pid

lck-file= log/oneproxy.lck

mysql-version = 5.6.27

proxy-address= :3307

proxy-master-addresses.1 = 10.122.3.73:3306@server1

proxy-slave-addresses.1 = 10.122.3.69:3306@server1

proxy-user-list=

test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test

proxy-user-group=

server1:test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3

proxy-part-template= conf/template.txt

proxy-part-tables.1= conf/part.txt

proxy-part-tables.2= conf/part2.txt

proxy-charset= gbk_chinese_ci

proxy-group-policy= server1:read-failover

2、启动bogon上的OneProxy,然后在bogon_2上通过bogon的3307端口来连接数据库,并执行select查询,可以观察发现此时查询走了slave数据库:

[root@bogon_2 init.d]#

mysql -h 10.122.3.73 -P 3307 -utest -ptest

Warning: Using a password

on the command line interface can be insecure.

Welcome to the MySQL

monitor.Commands end with ; or \g.

Your MySQL

connection id is 105

Server version: 5.6.27

OneProxy-Agent-5.8.1 (OneXSoft)

Copyright (c)

2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered

trademark of Oracle Corporation and/or its

affiliates. Other names may

be trademarks of their respective

owners.

Type 'help;' or '\h' for

help. Type '\c' to clear the current input statement.

mysql> select * from t;

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

| a | b|

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

| 1 | bogon_2 |

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

1 row in set

(0.00 sec)

3、关闭bogon_2上的MySQL服务,然后再执行上述查询,可以发现此时查询走了master数据库:

mysql> select * from t;

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

| a | b|

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

| 1 | bogon |

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

1 row in set (0.01 sec)

策略2:read-balance,测试结论是读操作将会轮询分配到slave和master节点上。

1、修改配置文件proxy.conf,将两台机器设置成一个group并设置相应访问策略,内容如下:

[oneproxy]

keepalive= 1

event-threads = 4

log-file= log/oneproxy.log

pid-file= log/oneproxy.pid

lck-file= log/oneproxy.lck

mysql-version = 5.6.27

proxy-address= :3307

proxy-master-addresses.1 = 10.122.3.73:3306@server1

proxy-slave-addresses.1 = 10.122.3.69:3306@server1

proxy-user-list=

test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test

proxy-user-group= server1:test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3

proxy-part-template= conf/template.txt

proxy-part-tables.1= conf/part.txt

proxy-part-tables.2= conf/part2.txt

proxy-charset= gbk_chinese_ci

proxy-group-policy= server1:read_balance

2、启动bogon上的OneProxy,然后在bogon_2上通过bogon的3307端口来连接数据库,并执行select查询,可以观察发现此时查询走了master数据库:

mysql> select * from t;

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

| a | b|

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

| 1 | bogon |

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

1 row in set

(0.00 sec)

3、然后关闭改连接在重新连接,可以发现此时查询走了slave数据库:

mysql> select * from t;

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

| a | b|

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

| 1 | bogon_2 |

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

1 row in set (0.00 sec)

策略3:big-failover,对于复杂查询只走slave节点,疑问是对于简单查询也没有走master节点。

1、修改配置文件proxy.conf,将两台机器设置成一个group并设置相应访问策略,内容如下:

[oneproxy]

keepalive= 1

event-threads = 4

log-file= log/oneproxy.log

pid-file= log/oneproxy.pid

lck-file= log/oneproxy.lck

mysql-version = 5.6.27

proxy-address= :3307

proxy-master-addresses.1 = 10.122.3.73:3306@server1

proxy-slave-addresses.1 = 10.122.3.69:3306@server1

proxy-user-list=

test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@test

proxy-user-group=

server1:test/1378F6CC3A8E8A43CA388193FBED5405982FBBD3

proxy-part-template= conf/template.txt

proxy-part-tables.1= conf/part.txt

proxy-part-tables.2= conf/part2.txt

proxy-charset= gbk_chinese_ci

proxy-group-policy= server1:big-failover

2、启动bogon上的OneProxy,然后在bogon_2上通过bogon的3307端口来连接数据库,并执行select查询,可以观察发现此时查询走了slave数据库:

mysql> select a, b from

t where a=1;

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

| a | b|

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

| 1 | bogon_2 |

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

1 row in set (0.01 sec)

mysql> select a, b from

t;

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

| a | b|

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

| 1 | bogon_2 |

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

1 row in set

(0.00 sec)

3、然后关闭改连接在重新连接,可以发现此时查询还是走了slave数据库,多次重复这两步操作查询结果相同:

mysql> select a, b from

t where a=1;

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

| a | b|

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

| 1 | bogon_2 |

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

1 row in set (0.01 sec)

mysql> select a, b from

t;

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

| a | b|

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

| 1 | bogon_2 |

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

1 row in set (0.00 sec)

oracle11g 读写分离代理,OneProxy5.8.1数据库读写分离特性试验相关推荐

  1. 简单好用!利用Spring AOP技术10分钟实现一个数据库读写分离方案

    前言 最近我们的APP在线用户越来越多,接口的响应速度也是越来越慢,经过运维排查发现是由于并发查询太多导致的数据库压力比较大,架构师经过调研给出了数据库读写分离的解决方案,为了快速解决问题,我们最终采 ...

  2. .net core发布 正在发现数据上下文_使用EF Core实现数据库读写分离

    以下文章来源于朝夕Net社区 ,作者Eleven 朝夕Net社区 朝气.丰富.活跃的.Net社区,朝夕教育携百万粉丝共同打造!有技术,有感悟,有新闻,有照片,有故事,还有梦想! [精选转载]| 作者/ ...

  3. 一文详解高性能数据库:读写分离

    虽然近十年来各种存储技术飞速发展,但关系数据库由于其 ACID 的特性和功能强大的 SQL 查询,目前还是各种业务系统中关键和核心的存储系统,很多场景下高性能的设计最核心的部分就是关系数据库的设计. ...

  4. 数据库读写分离,主从同步实现方法

    前言 众所周知,随着用户量的增多,数据库操作往往会成为一个系统的瓶颈所在,而且一般的系统"读"的压力远远大于"写",因此我们可以通过实现数据库的读写分离来提高系 ...

  5. 数据库应用——Atlas代理MySQL集群实现读写分离

    Atlas代理MySQL集群实现读写分离 一.Atlas简介和架构 1.1 环境准备 1.2 配置时间服务器 二.主服务器配置 2.1 master节点1的配置 2.2 master节点2的配置 2. ...

  6. 学会数据库读写分离、分表分库

    https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优 ...

  7. 读写分离mysql数据库mariadb_MariaDB数据库读写分离实现(一):mysql-proxy的使用

    一.mysql-proxy简介 MySQL-Proxy是处在你的MySQL数据库客户和服务端之间的程序,它还支持嵌入性脚本语言Lua.这个代理可以用来分析.监控和变换(transform)通信数据,它 ...

  8. mysql读写分离java配置方法_springboot配置数据库读写分离

    为什么要做数据库读写分离 大多数互联网业务,往往读多写少,这时候,数据库的读会首先称为数据库的瓶颈,这时,如果我们希望能够线性的提升数据库的读性能,消除读写锁冲突从而提升数据库的写性能,那么就可以使用 ...

  9. mysql_affect_array_Mysql代理类 支持Master/Slave 读写分离

    /** * Mysql代理类 支持Master/Slave 读写分离 客户端不需担心连Master/Slave 本类自动代理完成 * * @author 小黑米 * @package Core.DB ...

  10. 数据库读写分离(单主单从+双主双从)

    单主单从 name ip node1 192.168.44.100 安装mycat node5 192.168.44.33 主 node3 192.168.44.11 从 读写分离的前提是首先要先将数 ...

最新文章

  1. mysql 连接 查询 连表查询
  2. 深度学习框架YOLOv3的C++调用
  3. BugkuCTF-Misc:宽带信息泄露
  4. cocos2dx标准容器_cocos2dx 容器Layout
  5. Java面向对象(15)--static关键字静态理解与使用
  6. css3 定义选择器
  7. docker停止信号java_docker容器优雅停止
  8. 360浏览器广告太多怎么办_360浏览器如何关闭广告自动推送
  9. HTML.ActionLink 和 Url.Action 的区别
  10. python安装sqlalchemy python2_Python SQLAlchemy --2
  11. 信道检测手机软件 ios_【对讲机的那点事】宝峰UV5R对讲机上中继台的信道存储设置方法...
  12. 在MAC OSX系统中删除、添加、恢复、管理launchpad的STEAM游戏图标
  13. sinx泰勒展开_求极限:泰勒公式应展开到第几阶?
  14. samba文件共享服务器拒绝访问,Samba共享文件夹拒绝访问
  15. python下载第三方库超时报错pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=‘files.pyt
  16. [已解决]Notepad++ 无法安装HexEditor
  17. 哪款mac写python_新款Mac Pro有几个圈圈?写几行Python数一下
  18. 基于肤色高斯概率模型的人脸检测
  19. #医疗算法招聘:【医学影像AI公司-图像算法工程师】(招2人)
  20. MATLAB中写TXT文件换行的实现

热门文章

  1. Windows关机或重启显示有程序正在阻止、程序失去响应
  2. 从输入URL到页面加载的过程?由一道题完善自己的Web前端知识体系!
  3. iOS- 利用UIImageView自己整了个不会说话的汤姆猫
  4. 在mysql中创建用户并授权
  5. requests爬取英雄联盟皮肤图片
  6. Java 实现十进制数转换为二进制
  7. 密集芯片的焊接技巧:从LQFP64说起
  8. 地理信息系统(GIS) 知识详解
  9. 加州房价预测项目详细笔记(Regression)——(1)研究数据获得灵感
  10. javascript使用小技巧