暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYROUTER小妹妹

IT界数据库架构师的漂泊人生 2020-12-14
732

 自从MYSQL8发布后携带了ROUTER软件,据说它是来自于MYPROXY的路由的中间件。

看它有什么特长,那个特长!

  使用MySQL Router的工作流程如下:


  1. MySQL客户端连接到MySQL Router。

  2. Router检查可用的MySQL服务器。

  3. Router打开一个适用MySQL服务器的连接。

  4. Router在应用程序和MySQL服务器之间来回转发数据包

  5. 如果连接的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多主模式 可以说是白银组合


 



文章转载自IT界数据库架构师的漂泊人生,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论