自从MYSQL8发布后携带了ROUTER软件,据说它是来自于MYPROXY的路由的中间件。
看它有什么特长,那个特长!
使用MySQL Router的工作流程如下:
MySQL客户端连接到MySQL Router。
Router检查可用的MySQL服务器。
Router打开一个适用MySQL服务器的连接。
Router在应用程序和MySQL服务器之间来回转发数据包
如果连接的MySQL服务器出现故障, Router将断开连接。当应用程序重试连接到Router时,Router选择另一个可用MySQL服务器。
解压MYSQL8.017通用安装版
tar-xvf mysql-8.0.17-linux-glibc2.12-x86_64.tar
获得下面3个新压缩文件,
mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
mysql-router-8.0.17-linux-glibc2.12-x86_64.tar.xz
mysql-test-8.0.17-linux-glibc2.12-x86_64.tar.xz
[root@zabbix~]# ll
总用量 5093388
-rw-------.1 root root 3965 7月 25 14:26 anaconda-ks.cfg
-rw-r--r--.1 root root 4718 7月 25 14:26 install.log
-rw-r--r--.1 root root 11417 7月 25 14:26 install.log.syslog
-rw-r--r--.1 root root 665221120 11月 7 10:59 mysql-8.0.17-linux-glibc2.12-x86_64.tar
-rw-r--r--.1 7155 31415 480209016 6月 27 16:34 mysql-8.0.17-linux-glibc2.12-x86_64.tar.xz
-rw-r--r--.1 7155 31415 34514636 6月 27 17:42 mysql-router-8.0.17-linux-glibc2.12-x86_64.tar.xz
-rw-r--r--.1 7155 31415 150488620 6月 27 18:05 mysql-test-8.0.17-linux-glibc2.12-x86_64.tar.xz
继续解压我们的ROUTER 小妹妹
[root@zabbix~]# xz -d mysql-router-8.0.17-linux-glibc2.12-x86_64.tar.xz
[root@zabbix~]# tar -xvf mysql-router-8.0.17-linux-glibc2.12-x86_64.tar
移动特定的目录
[root@zabbix~]# mv mysql-router-8.0.17-linux-glibc2.12-x86_64/u01/myrouter
添加路径到环境中
[root@zabbixmysqlrouter]# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/u01/myrouter/bin
[root@zabbixmysqlrouter]# source ~/.bash_profile
看下帮助
[root@zabbixmysqlrouter]# mysqlrouter --help
MySQLRouter Ver 8.0.17for linux-glibc2.12 on x86_64 (MySQL Community - GPL)
Copyright(c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark ofOracle Corporation and/or its
affiliates.Other names may be trademarks of their respective owners.
Configuration read from the followingfiles in the given order (enclosed
inparentheses means not available for reading):
(/u01/myrouter/bin/.././mysqlrouter.conf)
(/u01/myrouter/bin/.././mysqlrouter.ini)
(/root/.mysqlrouter.conf)
(/root/.mysqlrouter.ini)
PluginsPath:
u01/myrouter/lib/mysqlrouter
DefaultLog Directory:
u01/myrouter
DefaultPersistent Data Directory:
u01/myrouter/bin/../var/lib/mysqlrouter
Default Runtime State Directory:
u01/myrouter/bin/../run
#Usage
mysqlrouter(-?|--help)
mysqlrouter(-V|--version)
根据帮助提示 建立对应的目录
[root@zabbixmysqlrouter]# mkdir u01/myrouter/conf
[root@zabbixmysqlrouter]# mkdir u01/myrouter/log
[root@zabbixmyrouter]# mkdir u01/myrouter/plugin
[root@zabbixmyrouter]# mkdir u01/myrouter/data
[root@zabbixmyrouter]# mkdir u01/myrouter/runtime
把随带的演示配置文件复制到位
cp/u01/myrouter/share/doc/mysqlrouter/sample_mysqlrouter.conf/u01/myrouter/conf/mysqlrouter.conf
把插件也拷贝到位
cp /u01/myrouter/lib/mysqlrouter/*.so/u01/myrouter/plugin
编辑我们的配置文件
vim /u01/myrouter/conf/mysqlrouter.conf
[DEFAULT]
logging_folder= /u01/myrouter/log #日志路径
plugin_folder= /u01/myrouter/plugin ##插件路径
config_folder= /u01/myrouter/conf ##配置文件
runtime_folder= /u01/myrouter/runtime ##运行时目录 不晓得做啥用的
data_folder= /u01/myrouter/data ##存放不知道啥数据的目录
#keyring_path= /var/lib/keyring-data
#master_key_path= /var/lib/keyring-key
[logger]
level =INFO #日志等级
[routing:basic_failover] ###主库切换策略
# To bemore transparent, use MySQL Server port 3306
bind_address= 192.168.2.20 ##绑定IP地址
bind_port =3306 ##绑定端口
routing_strategy= first-available ###策略首次有效
mode =read-write ###读写模式
destinations= 192.168.2.10:3306,192.168.2.11:3306,192.168.2.12:3306 ##服务器列表
[routing:load_balance] ###读策略
bind_address= 192.168.2.20
bind_port =3308 ###读端口
mode =read-only ###服务器 只读模式
destinations= 192.168.2.11:3306,192.168.2.12:3306
# If noplugin is configured which starts a service, keepalive
# will makesure MySQL Router will not immediately exit. It is
# safe toremove once Router is configured.
[keepalive]
interval =60
运行起来
[root@zabbixplugin]# mysqlrouter -c /u01/myrouter/conf/mysqlrouter.conf
loggingfacility initialized, switching logging to loggers specified in configuration
日志文件表示运行良好
[root@zabbixlog]# cat mysqlrouter.log
2019-11-07 16:03:00 keepalive INFO [7f1dbc22f700] keepalive started with interval 60
2019-11-0716:03:00 keepalive INFO [7f1dbc22f700] keepalive
2019-11-0716:03:00 routing INFO [7f1dbba2e700][routing:basic_failover] started: listening on 192.168.2.20:3306, routingstrategy = first-available
2019-11-0716:03:00 routing INFO [7f1dbb22d700][routing:load_balance] started: listening on 192.168.2.20:3308, routingstrategy = round-robin
2019-11-0716:04:00 keepalive INFO [7f1dbc22f700] keepalive
2019-11-0716:05:00 keepalive INFO [7f1dbc22f700] keepalive
2019-11-0716:06:00 keepalive INFO [7f1dbc22f700] keepalive
查看监听状态:
[mysql@hdp1~]$netstat -tnlp
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:199 0.0.0.0:* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:3306 :::* LISTEN 329852/mysqlrouter
tcp6 0 0 ::1:3308 :::* LISTEN 329852/mysqlrouter
[mysql@hdp1~]$
使用SQL LOG和TOAD FOR MYSQL 通过路由来连都OK
总结下它小妹妹 只是简单滴路由一下
Router将MySQL连接重定向到可用的MySQL服务器,这意味着数据包是在未经检查的情况下整体路由的。如果连接失败,应用程序须要重试连接,MySQL Router在尝试连接失败后选择新的MySQL服务器。这被称为简单重定向连接路由,因为它需要应用程序重试连接。也就是说,如果从MySQL Router到MySQL服务器的连接中断,则应用程序会遇到连接失败,但新的连接尝试会触发Router查找并连接到另一台MySQL服务器。路由连接的服务器和路由策略在配置文件中定义。
另外可选的routing_strategy配置选项。可用值为first-available、next-available、round-robin和round-robin-with-fallback。以前版本中,这些策略对应mode选项中的调度模式,其中read-write对应first-available,而read-only对应round-robin。它们保留了这些模式的先前行为。
添加了--ssl-key和--ssl-cert命令行选项,指定客户端证书和私钥以方便客户端身份验证。用于使用REQUIRE X509创建root帐户时。
添加了connect_timeout和read_timeout元数据配置文件选项。它们在[DEFAULT]命名空间下定义,并影响元数据服务器连接等内部操作。
最大并发客户端连接数从500增加到5000。
添加了一个新的mysqlrouter_plugin_info实用程序来帮助调试MySQL Router插件。
所以应用程序需要配置JDBC连接池
她自身,前后端都没有连接池,后端没有像MYCAT小姐姐样配置连接池和用户密码。
她不能对SQL进行解包出来,无法自动进行读写分离,应用程序需要配置两个JDBC源
主库策略 当主库挂了,自动向列表取下一个服务器,不会定时探测数据库可用性,对已经修复好的主库不能继续使用。必须重启MYSQL ROUTER服务器才生效。
而读这块 可以探测和修复都自动化。
这样MYROUTER适合有维修时间的应用系统,那种7*24小时就不太适合。
MYSQLROUTER+MGR多主模式 可以说是白银组合




