目录
一、mysql路由器——读写分离层
1、安装Mysql Router
安装包名称为< mysql-router-community-8.0.21-1.el7.x86_64.rpm >,安装完成后进入到</etc/mysqlrouter>目录下更改配置文件。
2、 更改配置<vim /etc/mysqlrouter/mysqlrouter.conf >
[routing:ro]
bind_address = 0.0.0.0
bind_port = 7001
destinations = 172.25.254.1:3306,172.25.254.2:3306,172.25.254.3:3306
routing_strategy = round-robin
#表示读数据时通过7001端口,从这三个节点中循环读取进行均衡
[routing:rw]
bind_address = 0.0.0.0
bind_port = 7002
destinations = 172.25.254.3:3306,172.25.254.2:3306,172.25.254.1:3306
routing_strategy = first-available
#表示写入数据时通过7002端口,从三个节点中顺序写入(只有当前一个挂了才会启用第二个)
3、启动mysqlrouter服务
systemctl start mysqlrouter.service
启动后,可以看到新开了两个端口7001和7002
4、在服务器中授权(三台mysql服务器随便哪组都可以)
grant all on test.* to zzh@'%' identified by 'westos'; #添加授权并设置密码
flush privileges; #刷新授权表
5、在客户端测试
在客户端中安装mysql的用户端软件<mariadb>,安装完成后可以直接使用。
dnf install mariadb.x86_64 -y #安装mysql的客户端软件
mysql -h 172.25.254.4 -P 7001 -u zzh -p test #用上一步设置的密码登录数据库
通过7001端口登录,由于在上一步中只给了表“test”的授权,所以客户端只能看到该表的内容。
6、在服务器上检查
先安装lsof软件,用来查看端口信息。
可以看到,上一步中客户端访问数据库,通过循环调度算法调度在了server1中。
yum install -y lsof #安装端口查看软件lsof
lsof -i :3306 #检查3306端口的使用情况
客户端退出数据库重新登录一次,调度算法调度到了server2中。
7、在客户端更换端口再次测试
由于7002端口采用的顺序调度策略,所以会按照mysql router中配置的进行调度。所以会调度到server3中。只有当server3坏掉后,才会按顺序调度到server2等等。