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. cocos2d-x 详解之 CCTexture2D(纹理图片)和 CCTextureCache(纹理缓存)

    精灵和动画都涉及到纹理图片的使用,所以在研究精灵与动画之前,我们先来了解一下纹理图片类CCTexture2D和纹理缓存CCTextureCache的原理: 当一张图片被加载到内存后,它是以纹理的形式存 ...

  2. npm + webpack +react

    踏上征途 在开始之前,你需要把你的 Node.js 和 NPM 都更新到最新的版本.访问 nodejs.org 查看安装详情.我们将会使用 NPM 安装一些工具. 开始使用 Webpack 非常简单, ...

  3. Android版本判断

    尽管Android向下兼容不好,但是一个程序还是可以在多个平台上跑的.向下兼容不好,接口改变,新的平台上不能用旧的API,旧的平台更不可能用新的API,不等于一个平台需要一个APK.可以在高版本的SD ...

  4. 快速建立Linux c/c++编译环境

    sudo apt-get install build-essential 省时又省心~

  5. ctags支持的语言

    http://ctags.sourceforge.net/languages.html Languages Supported by Exuberant Ctags: Ant Assembler AS ...

  6. sublime text 2使用经验

    1. Package Control 安装代码: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.instal ...

  7. 使用SignalR实现比特币价格实时刷新

    ASP.NET SignalR是微软支持的一个运行在 Dot NET 平台上的 HTML Websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重 ...

  8. Hadoop 2.2 YARN分布式集群搭建配置流程

    搭建环境准备:JDK1.6,SSH免密码通信 系统:CentOS 6.3 集群配置:NameNode和ResourceManager在一台服务器上,三个数据节点 搭建用户:YARN Hadoop2.2 ...

  9. Windows Server 2012 四个版本对比

    Windows Server 2012 有4种版本: Foundation, Essentials, Standard and Datacenter. 版本 Foundation Essentials ...

  10. 在NodeJS中配置aws ec2

    获取access key和secret access key           自己账户下有security credentials的选项                      然后点击Acce ...