MySQL Router 测试使用

. 特性
MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解, 特性包括:
对连接请求进行路由;和 Fabric 配套使用, 方便管理;
插件特性, 需要的功能以插件形式提供; . 配置
MySQL Router 在启动的时候会读取默认的配置文件, 用户可以通过 -DROUTER_CONFIGDIR= 或编辑 cmake/settings.cmake 来自定义配置文件, 默认情况下从以下路径读取: [root@cz-centos7 bin]# ./mysqlrouter --help
Copyright (c) , 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. Start MySQL Router. Configuration read from the following files in the given order (enclosed
in parentheses means not available for reading):
(./mysqlrouter.ini)
(/root/.mysqlrouter.ini) Usage: mysqlrouter [-v|--version] [-h|--help]
[-c|--config=]
[-a|--extra-config=]
Options:
-v, --version
Display version information and exit.
-h, --help
Display this help and exit.
-c , --config
Only read configuration from given file.
-a , --extra-config
Read this file after configuration files are read from either
default locations or from files specified by the --config
option.
值得一提的是 -c 选项指定的配置会被最先加载, -a 指定的配置后续加载. 2.1 配置文件设置 2.1. 通用选项 通用选项可以放到 [DEFAULT] 块中, 通常包括一些目录路径配置: logging_folder: MySQL Router 运行时产生 log 的目录路径, log 文件默认为 mysqlrouter.log, 不设置路径默认输出到标准输出(STDOUT);
plugin_folder: MySQL Router 的插件路径, 该路径必须和 MySQL Router 的安装目录对应上, 如果是自定义的安装路径, 该选项必须要指定, 默认为 /usr/local/lib/mysqlrouter;
runtime_folder: MySQL Router 运行时候的目录路径, 默认为 /usr/local ;
config_folder: MySQL Router 配置文件的路径, 默认为 /usr/loca/etc/mysqlrouter
举例如下: [DEFAULT]
logging_folder = /var/log/mysqlrouter
plugin_folder = /usr/local/mysqlrouter/lib
runtime_folder = /usr/local/mysqlrouter
2.1. 路由选项 以下选项可以放到路由策略 [routing:] 块中: bind_address: 工具启动的时候绑定的网卡地址, 默认为 127.0.0.1, 如果没有指定端口, bind_port 选项则必须指定;
bind_port: 工具启动监听的端口, 如果 bind_address 以 ip:port 形式指定, 则 bind_port 不需要再指定;
connect_timeout: 工具连接后端 MySQL Server 的超时时间, 默认为 1s, 有效的值为 ~ ;
destinations: 以分号形式提供后端需要连接的 MySQL Server 列表;
mode: 该选项必须要指定, 不同模式对应不同的调度策略, 目前支持两种方式: read-write 和 read-only;
max_connections: 连接到 MySQL Router 的最大连接数, 类似 MySQL Server 中的 max_connections 选项;
在 mode 选项中, 我们可以选用 read-write 和 read-only 模式:
read-write: 通常用于路由到后端的 MySQL master, 在 read-write 模式中, 所有的流量都转发到 destinations 指定的列表的首个地址, 比如 “127.0.0.1:, 127.0.0.1:″, 则所有的流量都转发到 端口, 如果 端口失败, 则尝试连接 端口, 如果列表中没有有效的MySQL Server, 路由请求会被中断丢弃; 这种方式被称作 “first-available”. 这种方式可以适用于一般的主从架构中, 比如指定列表 “master:, slave1:″, 在 master 出现故障的时候, MySQL Router 会自己连接 slave1, 不过中间的切换过程需要我们做很多的操作来满足这种工作模式. read-only: 路由请求到后端的 MySQL slave, 从这点看 read-only 模式下, destitions 指定的 MySQL Server 列表应该都是 slave, 不同于 read-write 都指定的是 master. 在 read-only 模式中, 使用轮询( round-robin )方式转发请求到后端的 Server. 如果一个 Server 不可用,则尝试下一个 Server, 这意味着不会丢失一个请求, 如果服务都不可用, 则丢弃请求.这种模式下如果应用读写分离, read-only 会是比较好的选择. 从上面两点看, MySQL Router 的服务模式和我们熟知的 cobar, atlas, kingshard 等大为不同, master, slave 都需要单独配置, 这点在扩展性方面比较差, 估计很多人不会喜欢该模式, 不过话说回来, 如果能够和 Fabric 很好的配合使用的话, 可能会吸引一部分用户使用. 2.1. 日志 日志选择可以放到 [logger] 块中, 可以用来指定日志级别, 默认为 INFO, 输出则依赖 logging_folder 的选项:
[logger]
level = DEBUG
2.2 配置举例 我们以读扩展的配置举例说明(read-write 模式估计不受欢迎 ~~, 可以配置多个 routing:, MySQL Router 可以启动多个routing ): [DEFAULT]
logging_folder = /usr/local/mysqlrouter/log
plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter
runtime_folder = /usr/local/mysqlrouter [logger]
level = DEBUG [routing:readtest]
bind_address = 0.0.0.0:
mode = read-only
destinations = 10.0.21.7:,10.0.21.17: #不能有空格
连接测试 启动 ./bin/mysqlrouter -c /usr/local/mysqlrouter/etc/mysqlrouter.ini
先来看看最简单的测试: [root@cz-centos7 ~]# time for x in `seq `; do /opt/Percona-Server-5.5.-rel31.-.Linux.x86_64/bin/mysql -h 10.0.21.90 -P -uroot percona -Bse "show global variables like 'hostname'; show tables"; done 配置举例 [DEFAULT]
logging_folder = /usr/local/mysqlrouter/log
plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter
runtime_folder = /usr/local/mysqlrouter [logger]
level = DEBUG [routing:readtest]
bind_address = 0.0.0.0:
mode = read-write
destinations = 10.0.21.17: #多个地址用逗号分隔, 中间不能有空格
我们这里只设置一个 master, 然后再对比下直连 MySQL 和连接 MySQL Router 的测试结果. 直连 master: [root@cz-centos7 ~]# /opt/mysql/bin/mysqlslap -h 10.0.21.17 -P -uroot -a --auto-generate-sql-execute-number= --auto-generate-sql-load-type=read --auto-generate-sql-secondary-indexes= --auto-generate-sql-unique-query-number= --auto-generate-sql-write-number= -c
Benchmark
Average number of seconds to run all queries: 180.839 seconds
Minimum number of seconds to run all queries: 180.839 seconds
Maximum number of seconds to run all queries: 180.839 seconds
Number of clients running queries:
Average number of queries per client:
连接 MySQL Router: [root@cz-centos7 ~]# /opt/mysql/bin/mysqlslap -h 10.0.21.90 -P -uroot -a --auto-generate-sql-execute-number= --auto-generate-sql-load-type=read --auto-generate-sql-secondary-indexes= --auto-generate-sql-unique-query-number= --auto-generate-sql-write-number= -c
Benchmark
Average number of seconds to run all queries: 433.598 seconds
Minimum number of seconds to run all queries: 433.598 seconds
Maximum number of seconds to run all queries: 433.598 seconds
Number of clients running queries:
Average number of queries per client:
从时间总是上看, 直连方式中10个线程执行 1w 次请求需要大约 181s 左右, 平均每个线程每秒执行5.5次, 连接 MySQL Router 则每个线程平均每秒执行2.3次, 多了一层转发性能消耗还是比较明显的. 这里只是简单的测试, destinations 中如果提供多个服务作为 read 扩展, 相信性能还是会有所提升的. 总体上看, 应用程序本身支持读写分离的话, 分别指定两个 routing section(read-write 和 read-only) 会是很不错的选择, 当然比起 atlas, cobar 等, 应用程序的结构会稍显复杂, 扩展性不强.

MySQL Router 测试使用 转的更多相关文章

  1. mysql router 自动failover测试

    mysql router 启动服务文件内容: [root@monitor mysqlrouter]# cat /etc/init.d/mysqlrouter#! /bin/bash## mysqlro ...

  2. MYSQL router 自动均衡负载

    配制文件: /etc/mysqlrouter/mysqlrouter.ini [DEFAULT] logging_folder = /var/log/mysql-router plugin_folde ...

  3. MySQL Router实现MySQL的读写分离

    1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...

  4. MySQL router

    MySQL Router is a building block for high availability (HA) solutions. It simplifies application dev ...

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

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

  6. paip.提升性能---mysql 性能 测试以及 参数调整.txt

    paip.提升性能---mysql 性能 测试以及 参数调整.txt 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://b ...

  7. 使用mysqlslap进行MySQL压力测试

    使用mysqlslap进行MySQL压力测试发表于236 天前 ? MySQL ? 暂无评论 MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来 ...

  8. mysql 通过测试'for update',深入了解行锁、表锁、索引

    mysql 通过测试'for update',深入了解行锁.表锁.索引 条件 FOR UPDATE 仅适用于InnoDB存储引擎,且必须在事务区块(BEGIN/COMMIT)中才能生效. mysql默 ...

  9. LINUX系统下MySQL 压力测试工具super smack

    摘要:1.源文件下载地址:http://vegan.net/tony/supersmack/2.安装:注意在编译时,可以先把对应的libmysqlclient.so.*拷贝到/usr/lib3.测试: ...

随机推荐

  1. HDU 4911 Inversion

    http://acm.hdu.edu.cn/showproblem.php?pid=4911   归并排序求逆对数. Inversion Time Limit: 2000/1000 MS (Java/ ...

  2. web安全测试&渗透测试之sql注入~~

    渗透测试概念: 详见百度百科 http://baike.baidu.com/link?url=T3avJhH3_MunEIk9fPzEX5hcSv2IqQlhAfokBzAG4M1CztQrSbwsR ...

  3. FS,FT,DFS,DTFT,DFT,FFT的联系和区别

    DCT变换的原理及算法 文库介绍 对于初学数字信号处理(DSP)的人来说,这几种变换是最为头疼的,它们是数字信号处理的理论基础,贯穿整个信号的处理. 学习过<高等数学>和<信号与系统 ...

  4. Apache Hadoop 镜像地址

    HTTP http://apache.fayea.com/ http://apache.opencas.org/ http://mirror.bit.edu.cn/apache/ http://mir ...

  5. Signs of a poorly written jQuery plugin 翻译 (Jquery插件开发注意事项,Jquey官方推荐)

    原文链接:http://remysharp.com/2010/06/03/signs-of-a-poorly-written-jquery-plugin/ 原文作者:remy sharp So far ...

  6. 解决问题的步骤(第一篇)-- clwu

    现象: 之前打开IE 还是正常的,但前几天开始打开就不正常了,报错如下. 处理(别人的)问题的步骤: 百度一下  0xc0000018,没有什么有用信息. 看一下程序(IE)启动时做了些什么. 怎么看 ...

  7. homework_01

    一. 程序的架构和思路: 这段求解最大子数组之和的程序使用的主要思想是贪心算法,即每一步求出的都是当前的最优解. 首先这道题要分两种情况来讨论: 1)如果当前的输入中所有的数均为负数时,那么最后的解就 ...

  8. 通过request读取所有参数

    获取request里的所有参数及参数名(参数名自动获取)  -  [ Java ] request里有两个方法: 1)request.getParameterMap(); Enumeration en ...

  9. 基于 Red5 的流媒体服务器的搭建和应用

    http://www.ibm.com/developerworks/cn/opensource/os-cn-Red5/ Red5 是一个采用 Java 开发的开源免费 Flash 流媒体服务器.Red ...

  10. thymeleaf中的th:remove用法

    一.删除模板片段使用th:remove属性 th:remove的值如下: 1.all:删除包含标签和所有的孩子. 2.body:不包含标记删除,但删除其所有的孩子. 3.tag:包含标记的删除,但不删 ...