MySQL Router 测试使用 转

MySQL Router 测试使用1. 特性
MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解, 特性包括:
对连接请求进行路由;和 Fabric 配套使用, 方便管理;
插件特性, 需要的功能以插件形式提供;2. 配置
MySQL Router 在启动的时候会读取默认的配置文件, 用户可以通过 -DROUTER_CONFIGDIR= 或编辑 cmake/settings.cmake 来自定义配置文件, 默认情况下从以下路径读取:[root@cz-centos7 bin]# ./mysqlrouter --help
Copyright (c) 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.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, --versionDisplay version information and exit.-h, --helpDisplay this help and exit.-c , --config Only read configuration from given file.-a , --extra-config Read this file after configuration files are read from eitherdefault locations or from files specified by the --configoption.
值得一提的是 -c 选项指定的配置会被最先加载, -a 指定的配置后续加载.2.1 配置文件设置2.1.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.2 路由选项以下选项可以放到路由策略 [routing:] 块中:bind_address: 工具启动的时候绑定的网卡地址, 默认为 127.0.0.1, 如果没有指定端口, bind_port 选项则必须指定; bind_port: 工具启动监听的端口, 如果 bind_address 以 ip:port 形式指定, 则 bind_port 不需要再指定; connect_timeout: 工具连接后端 MySQL Server 的超时时间, 默认为 1s, 有效的值为 1 ~ 65535; 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:3301, 127.0.0.1:3302″, 则所有的流量都转发到 3301 端口, 如果 3301 端口失败, 则尝试连接 3302 端口, 如果列表中没有有效的MySQL Server, 路由请求会被中断丢弃; 这种方式被称作 “first-available”. 这种方式可以适用于一般的主从架构中, 比如指定列表 “master:3301, slave1:3301″, 在 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.3 日志日志选择可以放到 [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:7001 mode = read-only destinations = 10.0.21.7:3301,10.0.21.17:3301 #不能有空格
3 连接测试启动./bin/mysqlrouter -c /usr/local/mysqlrouter/etc/mysqlrouter.ini 先来看看最简单的测试:[root@cz-centos7 ~]# time for x in `seq 1 5`; do /opt/Percona-Server-5.5.33-rel31.1-566.Linux.x86_64/bin/mysql -h 10.0.21.90 -P 7001 -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:7001 mode = read-write destinations = 10.0.21.17:3301 #多个地址用逗号分隔, 中间不能有空格 我们这里只设置一个 master, 然后再对比下直连 MySQL 和连接 MySQL Router 的测试结果.直连 master:[root@cz-centos7 ~]# /opt/mysql/bin/mysqlslap -h 10.0.21.17 -P 3301 -uroot -a --auto-generate-sql-execute-number=10000 --auto-generate-sql-load-type=read --auto-generate-sql-secondary-indexes=3 --auto-generate-sql-unique-query-number=1 --auto-generate-sql-write-number=1000 -c 10 BenchmarkAverage number of seconds to run all queries: 180.839 secondsMinimum number of seconds to run all queries: 180.839 secondsMaximum number of seconds to run all queries: 180.839 secondsNumber of clients running queries: 10Average number of queries per client: 10000 连接 MySQL Router:[root@cz-centos7 ~]# /opt/mysql/bin/mysqlslap -h 10.0.21.90 -P 7001 -uroot -a --auto-generate-sql-execute-number=10000 --auto-generate-sql-load-type=read --auto-generate-sql-secondary-indexes=3 --auto-generate-sql-unique-query-number=1 --auto-generate-sql-write-number=1000 -c 10 BenchmarkAverage number of seconds to run all queries: 433.598 secondsMinimum number of seconds to run all queries: 433.598 secondsMaximum number of seconds to run all queries: 433.598 secondsNumber of clients running queries: 10Average number of queries per client: 10000 从时间总是上看, 直连方式中10个线程执行 1w 次请求需要大约 181s 左右, 平均每个线程每秒执行5.5次, 连接 MySQL Router 则每个线程平均每秒执行2.3次, 多了一层转发性能消耗还是比较明显的. 这里只是简单的测试, destinations 中如果提供多个服务作为 read 扩展, 相信性能还是会有所提升的.总体上看, 应用程序本身支持读写分离的话, 分别指定两个 routing section(read-write 和 read-only) 会是很不错的选择, 当然比起 atlas, cobar 等, 应用程序的结构会稍显复杂, 扩展性不强.

 

转载于:https://www.cnblogs.com/zengkefu/p/5499706.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux脚本获取usb设备,Linux基于USB端口执行脚本

您应该弄清楚您的外部端口与哪个USB总线连接。在我的电脑上所有外部USB端口都连接到Bus 01要做这个检查lsusb -t的输出,然后附上一个usb设备并再次检查输出lsusb -t。那么你知道什么是 不会忽略 你的三个外部USB端口在你的设备内部USB结构树:内部USB端口…

pandas 合并所有列_Python学习:Pandas库

pandas包含数据结构和数据处理工具的设计使得在Python中进行数据清洗和分析非常快捷。pandas经常是和NumPy,Scipy以及数据可视化工具matplotlib一起使用的。pandas支持大部分NumPy语言风格的数组计算,但最大的不同在于pandas是用于处理表格型或异质型数据的。而NumP…

linux操作系统桌面应用与管理第2版,linux操作系统桌面应用与管理(62页)-原创力文档...

红旗Linux;任务在项目中的位置;任务描述;任务准备-明确学习目标;任务准备-任务1分解;任务1-1实施;任务1-1实施;任务1-1实施;最小化系统安装;最小化系统安装;任务1-2 通过yum定制系统实施;任务1-2 通过yum定制系统实施;1)yum了解;2)yum的安装;2)yum的安装…

python 请在微信客户端打开_完美解决 请在微信客户端打开链接

完美解决 请在微信客户端打开链接背景描述相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解…

进程和多线程

一、进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ、Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线…

CUMT--Java复习--网络编程

目录 一、Java网络API 1、InetAddress类 2、URL类 3、URLConnection类 4、URLDecoder类和URLEncoder类 二、基于TCP的网络编程 1、Socket类 2、ServerSocket类 三、网络通信过程 一、Java网络API Java中有关网络方面的功能都定义在java.net中。 1、InetAddress类 Jav…

windows dc linux,active-directory – Linux AD集成,使用Windows Server 2012 DC时无法登录

我正在尝试将我的CentOS 6.6服务器集成到Active Directory中.我使用配置3(SSSD / Kerberos / LDAP)遵循Red Hat的this指南.使用Windows Server 2008 R2服务器作为启用IMU的域控制器时,一切都运行良好.但是,当我使用启用了IMU的Windows Server 2012 R2服务器时,我能够获取kerber…

html table设置行高_html 表格单元格的宽度和高度的设置方法

做网页的时候,经常会碰到表格宽度对不齐的问题。详细地看了html中表格标签table的高度和宽度设置的细节,现总结如下:1、table中的width和height设置及其作用:table中设置的height其实是设置个最小值,也就是当表格中的内…

iOS懒加载

1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其getter方法。说的通俗一点,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不…

linux promisc 作用,linux 下怎樣查看網卡是否支持混雜(promisc)模式

1,未設置支持promisc[rootbogon libpcap-1.3.0]# ifconfig eth0eth0: flags4163 mtu 1500inet 192.168.1.18 netmask 255.255.255.0 broadcast 192.168.1.255inet6 fe80::20c:29ff:fe90:90e9 prefixlen 64 scopeid 0x20ether 00:0c:29:90:90:e9 txqueuelen 10…

docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解

1、先说如何在docker中部署tomcat第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7;第二步:创建Dockerfile,命令如:touch …

Linux vi 行尾 ctrl,linux中vi使用技巧常用技巧和高级替换

linux中vi使用技巧常用技巧和高级替换模式切换:i,I 进入插入模式:i为从目前光标所在处插入;I为在目前所在列的第一个非空格的字符处开始插入。a,A 进入插入模式:a为从目前光标所在的下一个字符处开始插入…

c# 批量mqtt_C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)原创weixin_pwtank1983 发布于2018-02-03 10:22:24 阅读数 36681 收藏展开目录MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)MQTT(二)在windows64位上安装Python环境MQTT(三)Python客户端net客…

5月16日 AJAX

主页面&#xff1a; <head> <script src"../jquery-2.2.3.min.js"></script> </head><body> <div> <input type"text" id"uid" /><span id"xinxi"></span> </div> </…

linux signal 符号表6,gdb调试信息__000_linux-gnu_00000000_002_rw-p__169IT.COM

很少使用gdb调试&#xff0c;现在用了&#xff0c;又不知道是什么意思&#xff0c;求大侠指教*** glibc detected *** /home/hhbgk/url/url: free(): invalid next size (normal): 0x0809ac30 *** Backtrace: /lib/i386-linux-gnu/libc.so.6(0x6ff22)[0x1a0f22]/lib/i386-linux…

pyecharts查看版本_pyecharts v1 版本 学习笔记 折线图,面积图

折线图折线图 基本demoimport pyecharts.options as optsfrom pyecharts.charts import Linec (Line().add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]).add_yaxis(商家A, [1…

【Django】Django Debug Toolbar调试工具配置

正在发愁怎么调试Django&#xff0c;就遇到了Django Debug Toolbar这个利器。 先说遇到的问题&#xff1a; 网上也有教程&#xff0c;不过五花八门的&#xff0c;挨个尝试了一遍&#xff0c;也没有成功运行。最后终于找到问题所在&#xff1a; 从开发服务器日志可知&#xff1a…

单片机c语言模块化实例程序设计,单片机C语言模块化设计

原标题&#xff1a;单片机C语言模块化设计keil中实现 模块化编程.doc在使用 KEIL 的时候,我们习惯上在一个.c 的文件中把自己要写的东西按照自己思路的顺序进行顺序书写。这样是很普遍的写法,当程序比较短的时候比如几十行或者一百多行,是没有什么问题的。但是当程序很长的时候…

python中提取pdf文件某些页_人工智能|Python提取PDF中的文本并朗读

题前的话之前有老师在群里推荐这个&#xff0c;我看了一眼觉得还是蛮有趣的&#xff0c;然后就忘了……昨天又看到这个《宅男福利&#xff01;我50行Python代码让小姐姐给你读Pdf》&#xff0c;今天于是开始自己尝试&#xff0c;谁知道pdfplumber库怎么也安装不了&#xff0c;最…

基于RAF的一个小动画框

RAF也即是requestAnimationFrame&#xff0c;之前的动画都是基于setTimeout写的&#xff0c;所以为了性能方面的考虑&#xff0c;开始使用requestAnimationFrame写动画。 function animation(obj, data) {if (obj.timer) {window.cancelAnimationFrame(obj.timer)}obj.timer w…