MySQL Router 测试使用 转
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 测试使用 转的更多相关文章
- mysql router 自动failover测试
mysql router 启动服务文件内容: [root@monitor mysqlrouter]# cat /etc/init.d/mysqlrouter#! /bin/bash## mysqlro ...
- MYSQL router 自动均衡负载
配制文件: /etc/mysqlrouter/mysqlrouter.ini [DEFAULT] logging_folder = /var/log/mysql-router plugin_folde ...
- MySQL Router实现MySQL的读写分离
1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...
- MySQL router
MySQL Router is a building block for high availability (HA) solutions. It simplifies application dev ...
- 利用MySQL Router构建读写分离MGR集群
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 部署MySQL Router 2. 启动mysqlrouter服务 3. 确认读写分离效果 4. 确认只读负载 ...
- paip.提升性能---mysql 性能 测试以及 参数调整.txt
paip.提升性能---mysql 性能 测试以及 参数调整.txt 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://b ...
- 使用mysqlslap进行MySQL压力测试
使用mysqlslap进行MySQL压力测试发表于236 天前 ? MySQL ? 暂无评论 MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来 ...
- mysql 通过测试'for update',深入了解行锁、表锁、索引
mysql 通过测试'for update',深入了解行锁.表锁.索引 条件 FOR UPDATE 仅适用于InnoDB存储引擎,且必须在事务区块(BEGIN/COMMIT)中才能生效. mysql默 ...
- LINUX系统下MySQL 压力测试工具super smack
摘要:1.源文件下载地址:http://vegan.net/tony/supersmack/2.安装:注意在编译时,可以先把对应的libmysqlclient.so.*拷贝到/usr/lib3.测试: ...
随机推荐
- Android的SoundPool
开发Android软件中我们可能经常需播放多媒体声音文件,一般使用MediaPlayer类但该类占用资源较多,对于游戏等应用可能不是很适合,SoundPool类在SDK的android.media.S ...
- 使用 gradle 编译多版本 android 应用
最近要做一个 android 产品的变种版本,需要编出不同版本,每个版本有不同的包名.图标等等,和一些特有的逻辑. 很久之前做过类似的工作,当时没有 gradle, 用的方法是把公共代码抽成一个 li ...
- netty的入门
netty是什么? netty是一个基于NIO的通信框架,对于传统计算机,系统的瓶颈一直在输入输出设备上,计算速度超过IO速度,所以对于i o的性能提高异常重要. 什么是NIO? 非阻塞IO,N表示n ...
- python学习之subprocess模块
subprocess.Popen 这个模块主要就提供一个类Popen: class subprocess.Popen( args, bufsize=0, executable=None, stdin= ...
- 常用的Activex 控件
1. Flash Player ActiveX Control 6.0.47.0 与FLASH 6.0配套的浏览器端动画播放插件 download.pchome.n ...
- HDU 5723 Abandoned country (最小生成树+dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5723 n个村庄m条双向路,从中要选一些路重建使得村庄直接或间接相连且花费最少,这个问题就是很明显的求最 ...
- <a href="javascript:void(0);" id='test' onclick="javascript:alert('即将上线,敬请期待!');"><em class="rmwd"></em>征稿平台</a>
<a href="javascript:void(0);" id='test' onclick="javascript:alert('即将上线,敬请期待!');&q ...
- Java NIO类库Selector机制解析(下)
五. 迷惑不解 : 为什么要自己消耗资源? 令人不解的是为什么我们的Java的New I/O要设计成这个样子?如果说老的I/O不能多路复用,如下图所示,要开N多的线程去挨个侦听每一个Channel ...
- 开源原生JavaScript插件-CJPCD(省市区联动)
一.前言 上两篇博客笔者对 JavaScript Module 模式,闭包等知识点做了简单介绍之后,我们今天开始正式开发一款属于自己的 JavaScript 插件.由于最近项目刚好用到地区选择这一块的 ...
- CSS构造超链接
超链接边框 派生超链接 属性选择器超链接 动态超链接 图像翻转超链接 CSS工具提示 1.给链接加上边框 A:link { Color: #f00; Text- ...