MySQL router
MySQL Router is a building block for high availability (HA) solutions. It simplifies application development
by intelligently routing connections to MySQL servers for increased performance and reliability.
MySQL Router 8 fully supports MySQL 5.7 and MySQL 8, and it replaces the MySQL Router 2.x series. If
you currently use Router 2.0 or 2.1 then we recommend upgrading your installation to MySQL Router 8.
1 mysql router 安装
==mysqlroueter 2.1,本测试环境是mysql 5.6.15, Kylin Linux release 3.3.1707 (Core)
[root@mysqlhq soft]# rpm -ivh mysql-router-2.1.6-1.el6.x86_64.rpm
warning: mysql-router-2.1.6-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-router-2.1.6-1.el6 ################################# [100%]
[root@mysqlhq soft]# whereis mysqlrouter
mysqlrouter: /usr/bin/mysqlrouter /usr/lib64/mysqlrouter /etc/mysqlrouter
[root@mysqlhq soft]# ll /usr/bin/mysqlrouter
-rwxr-xr-x 1 root root 23592 Feb 21 2018 /usr/bin/mysqlrouter
[root@mysqlhq soft]# which mysqlrouter
/usr/bin/mysqlrouter
[root@mysqlhq soft]# rpm -qa|grep mysql-router
mysql-router-2.1.6-1.el6.x86_64
[root@mysqlhq soft]# ll /etc/mysqlrouter/
total 4
-rw-r--r-- 1 root root 1231 Feb 21 2018 mysqlrouter.conf
[root@mysqlhq soft]# ll /etc/init.d/mysqlrouter
-rwxr-xr-x 1 root root 2879 Feb 21 2018 /etc/init.d/mysqlrouter
[root@mysqlhq ~]# ll /usr/lib64/mysqlrouter
total 2592
-rwxr-xr-x 1 root root 9424 Feb 21 2018 keepalive.so
-rwxr-xr-x 1 root root 24136 Feb 21 2018 logger.so
-rwxr-xr-x 1 root root 124416 Feb 21 2018 metadata_cache.so
-rwxr-xr-x 1 root root 30096 Feb 21 2018 mysql_protocol.so
-rwxr-xr-x 1 root root 210504 Feb 21 2018 routing.so
-rwxr-xr-x 1 root root 2241288 Feb 21 2018 x_protocol.so #m-s架构
#m 192.168.19.145
#s 192.168.19.227
[root@mysqlhq mysqlrouter]# vim mysqlrouter.conf
[DEFAULT]
logging_folder = /var/log/mysqlrouter/
plugin_folder = /usr/lib64/mysqlrouter
runtime_folder = /var/run/mysqlrouter
config_folder = /etc/mysqlrouter [logger]
level = info [routing:read_write]
bind_address = 192.168.19.145
bind_port = 7001
mode = read-write
destinations = 192.168.19.145:3306,192.168.19.227:3306
max_connections = 1024
max_connect_errors = 100
client_connect_timeout = 6
connect_timeout=3
# If no plugin is configured which starts a service, keepalive
# will make sure MySQL Router will not immediately exit. It is
# safe to remove once Router is configured.
[routing:read_only]
bind_address = 192.168.19.145
bind_port = 7002
mode = read-only
destinations = 192.168.19.145:3306,192.168.19.227:3306
max_connections = 1024
max_connect_errors = 100
client_connect_timeout = 6
connect_timeout=3 [keepalive]
interval = 60
[root@mysqlhq mysqlrouter]# mysqlrouter -v
MySQL Router v2.1.6 on Linux (64-bit) (GPL community edition)
[root@mysqlhq mysqlrouter]# groupadd mysqlrouter
groupadd: group 'mysqlrouter' already exists
[root@mysqlhq mysqlrouter]# useradd -g mysqlrouter mysqlrouter
useradd: user 'mysqlrouter' already exists
[root@mysqlhq mysqlrouter]# id mysqlrouter
uid=989(mysqlrouter) gid=984(mysqlrouter) groups=984(mysqlrouter)
[root@mysqlhq mysqlrouter]# chown -R mysqlrouter:mysqlrouter /etc/mysqlrouter
[root@mysqlhq mysqlrouter]# /usr/bin/mysqlrouter -c /etc/mysqlrouter/mysqlrouter.conf &
[1] 3577
[root@mysqlhq mysqlrouter]# ps -ef|grep mysqlrouter
root 3577 831 0 16:57 pts/0 00:00:00 /usr/bin/mysqlrouter -c /etc/mysqlrouter/mysqlrouter.conf
root 3588 831 0 16:57 pts/0 00:00:00 grep --color=auto mysqlrouter
[root@mysqlhq mysqlrouter]# netstat -lnt|grep 7001
tcp 0 0 192.168.19.145:7001 0.0.0.0:* LISTEN [root@mysqlhq ~]# cd /var/log/mysqlrouter/
[root@mysqlhq mysqlrouter]# vim mysqlrouter.log
2019-01-14 16:57:10 WARNING [7f266a1d1700] [routing:read_only] setup_tcp_service() error from bind(): Cannot assign requested address
2019-01-14 16:57:10 ERROR [7f266a1d1700] routing:read_only: Setting up TCP service using 192.168.20.118:7002: [routing:read_only] Failed to setup service socket: Cannot assign requested address
2019-01-14 16:57:10 INFO [7f26699d0700] [routing:read_write] started: listening on 192.168.19.145:7001; read-write
2019-01-14 16:57:10 INFO [7f266a9d2700] keepalive started with interval 60
2019-01-14 16:57:10 INFO [7f266a9d2700] keepalive
2019-01-14 16:58:10 INFO [7f266a9d2700] keepalive
2 启动,测试mysql router
[mysql@mysqlhq ~]$ mysql -h 192.168.19.145 -u system -p*** -P 7001
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 312548
Server version: 5.6.15-log MySQL Community Server - (GPL) Copyright (c) 2000, 2013, 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. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. (system@192.168.19.145:7001) [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
(system@192.168.19.145:7001) [(none)]> show variables like '%read_only%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_read_only | OFF |
| read_only | OFF |
| tx_read_only | OFF |
+------------------+-------+ [mysql@mysqlhq ~]$ mysql -h 192.168.19.145 -u system -p*** -P 7001 -e "select @@hostname;"
Warning: Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysqlhq |
+------------+ [root@mysqlhq mysqlrouter]# netstat -lnt|grep 7002 #7002端口没有启动起来,log中没有报错信息
检查配置文件,发现ip写错了
[routing:read_only]
bind_address = 192.168.20.118 #此处修改为192.168.19.145
重新启动mysqlrouter
[root@mysqlhq mysqlrouter]# /usr/bin/mysqlrouter --help
[root@mysqlhq mysqlrouter]# ps -ef|grep mysqlrouter
root 3577 831 0 16:57 pts/0 00:00:00 /usr/bin/mysqlrouter -c /etc/mysqlrouter/mysqlrouter.conf
root 4266 4138 0 17:04 pts/2 00:00:00 tail -f mysqlrouter.log
root 5544 831 0 17:18 pts/0 00:00:00 grep --color=auto mysqlrouter
[root@mysqlhq mysqlrouter]# kill 3577
[root@mysqlhq mysqlrouter]# /usr/bin/mysqlrouter -c /etc/mysqlrouter/mysqlrouter.conf &
[root@mysqlhq mysqlrouter]# netstat -lnt|grep 7001
tcp 0 0 192.168.19.145:7001 0.0.0.0:* LISTEN
[root@mysqlhq mysqlrouter]# netstat -lnt|grep 7002
tcp 0 0 192.168.19.145:7002 0.0.0.0:* LISTEN
日志信息
2019-01-14 17:18:13 INFO [7faef06c7700] keepalive started with interval 60
2019-01-14 17:18:13 INFO [7faef06c7700] keepalive
2019-01-14 17:18:13 INFO [7faeefec6700] [routing:read_only] started: listening on 192.168.19.145:7002; read-only
2019-01-14 17:18:13 INFO [7faeef6c5700] [routing:read_write] started: listening on 192.168.19.145:7001; read-write
在2个port上进行查询
[mysql@mysqlhq scripts]$ mysql -h 192.168.19.145 -u system -p*** -P 7001 -e "select @@hostname;"
Warning: Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysqlhq |
+------------+
[mysql@mysqlhq scripts]$ mysql -h 192.168.19.145 -u system -p*** -P 7002 -e "select @@hostname;"
Warning: Using a password on the command line interface can be insecure.
+------------+
| @@hostname |
+------------+
| mysqlhq |
+------------+
(system@192.168.19.145:7001) [(none)]> select @@port;
+--------+
| @@port |
+--------+
| 3306 |
+--------+
3 性能--
Deploying MySQL Router
Performance Recommendations
For best performance, MySQL Router is typically installed on the same host as the application that uses it. Possible reasons include:
为了获得更好的性能,建议把mysql router安装在application的主机上
To allow local UNIX domain socket connections to the application, instead of TCP/IP. 允许本地UNIX域套接字连接到应用程序,替代TCP/IP
To decrease network latency. 减少网络的潜在因素
To allow MySQL Router to connect to MySQL without requiring extra accounts for the Router's host, for MySQL accounts that are created specifically
for application hosts, such as myapp@198.51.100.45 instead of a value like myapp@%. 账号安全
Typically application servers are easiest to scale. 通常,应用服务器是最容易伸缩的
You can run several instances of MySQL Router on your network, and do not need to isolate the router to a single machine or even a single
Router instance. This is because MySQL Router has no affinity for any particular server or host.
https://dev.mysql.com/doc/mysql-router/2.1/en/mysql-router-preface.html
MySQL router的更多相关文章
- MYSQL router 自动均衡负载
配制文件: /etc/mysqlrouter/mysqlrouter.ini [DEFAULT] logging_folder = /var/log/mysql-router plugin_folde ...
- mysql router 自动failover测试
mysql router 启动服务文件内容: [root@monitor mysqlrouter]# cat /etc/init.d/mysqlrouter#! /bin/bash## mysqlro ...
- MySQL Router 测试使用 转
MySQL Router 测试使用 . 特性 MySQL Router 并没有包括一些特别新的特性, 总体上看中规中矩, 不过 first-available 和插件两个特性挺有意思, 后续会进行讲解 ...
- MySQL Router实现MySQL的读写分离
1.简介 MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy. 既然MySQL Router是一个数据库的中间件,那么MySQL Rout ...
- mysql router使用配置
mysql router使用配置 参考资料: https://www.jianshu.com/p/7fc8d77bea59 一.架构图 介绍: MySQL Router是处于应用client和dbse ...
- MySQL Router单点隐患通过Keepalived实现
目录 一.介绍 二.环境准备 三.安装步骤 3.1下载软件包,解压 3.2源码安装 3.3配置keepalived 3.4修改keepalived配置文件 3.5启动keepalived 3.6查看V ...
- MySQL Router重装后重新连接集群进行引导出现的——此主机中之前已配置过的问题
问题出现的前因: 因为重新安装了MySQL Router,然后打算重新连接上目标集群进行MySQL Router的初始化引导,结果报错了! [root@linux666 system]# mysqlr ...
- 利用MySQL Router构建读写分离MGR集群
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 目录 1. 部署MySQL Router 2. 启动mysqlrouter服务 3. 确认读写分离效果 4. 确认只读负载 ...
- Mysql Router 的集群
1. c:\mysql-router, c:\mysql-5.7.23, 这两个目录的bin都要加入path 2. c:\mysql-shell,在bin下,有一个 mysqlsh.exe, 双击,打 ...
随机推荐
- spring mvc:文本框
采用:<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> ...
- Project Euler 126 - Cuboid layers
这题先是推公式… 狂用不完全归纳+二次回归,最后推出这么一个奇怪的公式 \[f(t,x,y,z)=4(t-1)(x+y+z+t-2)+2(xy+yz+xz)\] 表示长宽高为\(x\).\(y\).\ ...
- .zip.001 -- .zip.003解压缩
一.源文件移到固定短路径 二.cmd执行合并 copy /B 201702.zip.001 + 201702.zip.002 + 201702.zip.003 1.zip 三.WinRAR解压缩
- OS快捷键
OS X 键盘快捷键 若要使用键盘快捷键或按键组合,您可以同时按修饰键和字符键.例如,同时按下 Command 键(标有 符号的按键)和“c”键会将当前选中的任何内容(文字.图形等)拷贝至夹纸板.这也 ...
- Mysql中文汉字转拼音的实现(每个汉字转换全拼)
-- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` varchar(255) CHARACTER SET gb ...
- [置顶]
Kubernetes1.7新特性:新增自动伸缩条件和参数
一.核心概念 Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现POD水平自动伸缩的功能.云计算具有水平弹性的特性,这个是云计算区别于传统IT技术架构的主要 ...
- Electron 使用 Webpack2 打包多入口应用程序
Electron 使用 Webpack2 打包多入口应用程序 接前面一篇文章,前一篇文章中只有一个页面,并且只有一个js文件,所以打包的时候会把那个js打包成一个bundle.js文件.但是假如我们有 ...
- ROS新版本Lunar Loggerhead
参考链接: 1 http://wiki.ros.org/lunar 2 http://wiki.ros.org/lunar/Installation 3 http://docs.ros.org/ 4 ...
- [Beego] 内置的模板函数(不同格式的字符串和html的互转)
在使用beego框架的时候,常常需要把不同形式的字符串转化为html,有时候为了安全考虑会将html转义,而有时候希望能显示html标签.在存储到db中后,再取出来的显示是原本的,即html标签不会生 ...
- Java中最常见的十道面试题
第一,谈谈final, finally, finalize的区别. final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 ...