mysqlrouter的介绍与使用

mysqlrouter介绍

  • MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的SQL proxy。

  • 既然MySQL Router是一个数据库的中间件,那么MySQL Router必须能够分析来自前面客户端的SQL请求是写请求还是读请求,以便决定这个SQL请求是发送给master还是slave,以及发送给哪个master、哪个slave。这样,MySQL Router就实现了MySQL的读写分离,对MySQL请求进行了负载均衡。

  • 因此,MySQL Router的前提是后端实现了MySQL的主从复制。

  • MySQL Router很轻量级,只能通过不同的端口来实现简单的读/写分离,且读请求的调度算法只能使用默认的rr(round-robin),更多一点、更复杂一点的能力都不具备。所以,在实现MySQL Router时,需要自行配置好后端MySQL的高可用。高可用建议通过Percona XtraDB Cluster或MariaDB Galera或MySQL官方的group replication实现,如果实在没有选择,还可以通过MHA实现。

mysqlrouter的实现

server2作为
路由器的配置
yum install mysql-router-community-8.0.21-1.el7.x86_64.rpm -y安装

[root@server2 mysqlrouter]# mysqlrouter -V##查看版本
MySQL Router  Ver 8.0.21 for Linux on x86_64 (MySQL Community - GPL)

server2:
vim /etc/mysqlrouter/mysqlrouter.conf编写配置文件

[routing:ro]
bind_address = 0.0.0.0
bind_port=7001
destinations =172.25.9.1:3306,172.25.9.3:3306,172.25.9.4:3306
routing_strategy = round-robin

[routing:rw]
bind_address=0.0.0.0
bind_port=7002
destinations=172.25.9.1:3306,172.25.9.3:3306,172.25.9.4:3306
routing_strategy = first-available

在这里插入图片描述

  • server1添加用户
mysql> create user 'myr'@'%' identified by 'westos';
Query OK, 0 rows affected (0.04 sec)

mysql> GRANT  ALL ON  *.*  TO 'myr'@'%';
Query OK, 0 rows affected (0.04 sec)


  • 在server2测试是否可以访问得到
[root@server2 run]# mysql  -h 172.25.9.2 -P 7001 -umyr -pwestos -e  "select @@hostname"
+------------+
| @@hostname |
+------------+
| server4    |
+------------+
  • 轮询
  • 在server2访问
  • 7001端口只读

在这里插入图片描述

  • 7002 端口读写
    在这里插入图片描述

  • 写入插入语句成功,通过7001端口则不成功。

  • 在物理真机下也可以访问
    在这里插入图片描述

  • 把server1的mysql 停掉

  • 会直接跳过server1
    在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值