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. Launcher2编译

    Android的源码包,压缩文件大概有3个G左右,要使用其中自带的一些源码需要很多技巧,否则会提示找不到一些库,大量的报错让人心神不定,不知所从. 我拿桌面代码举个例子吧. 桌面代码在源码包的pack ...

  2. html在图片上实现下雨效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. Cocos2d-x使用iOS游戏内付费IAP(C++篇)

    本文章转载 http://www.ityran.com/archives/5515.非本人原创! 前期准备 设备与账号 在开始编码之前我们需要准备测试环境. IAP只能真机测试,准备一台iOS设备是必 ...

  4. C语言反转字符串

    也是面腾讯的一道编程题=,= 这题比较简单 代码如下: #include <stdio.h> #include <string.h> // 非递归实现字符串反转 char *r ...

  5. C语言的指针移位问题

    先贴代码 #include <stdio.h> int main(void) { double a[]={1.1,2.2,3.3}; unsigned int b,c,d; b=& ...

  6. PHP操作cookie函数:setcookie()与setrawcookie()

    PHP setcookie() 函数向客户端发送一个 HTTP cookie.cookie 是由服务器发送到浏览器的变量.cookie 通常是服务器嵌入到用户计算机中的小文本文件.每当计算机通过浏览器 ...

  7. C++中#include包含头文件带 .h 和不带 .h 的区别

    C++中#include包含头文件带 .h 和不带 .h 的区别? 如 #include <iostream> 和 #include <iostream.h> 包含的东西有哪些 ...

  8. Codeforces Round #362 (Div. 2) C. Lorenzo Von Matterhorn (类似LCA)

    题目链接:http://codeforces.com/problemset/problem/697/D 给你一个有规则的二叉树,大概有1e18个点. 有两种操作:1操作是将u到v上的路径加上w,2操作 ...

  9. HDU 2874 Connections between cities (LCA)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2874 题意是给你n个点,m条边(无向),q个询问.接下来m行,每行两个点一个边权,而且这个图不能有环路 ...

  10. Windows安全模式的妙用

    使用计算机的老手一定对windows安全模式不陌生,在删除病毒,卸载顽固软件,或者系统维护时,Windows的安全模式肯定会帮助很大,下面电脑技术就说说Windows安全模式的作用以及用处. wind ...