mysql route 是mysql官方出的中间件。
此篇文章是上一篇文章的后续,因为实在太长了,所以分成俩篇。
上一篇只做了一个主从复制(主1和从1)和主主复制(主1和主2),所以我们现在需要再增加一个从2。
新增从2,如果上一篇已经生成了容器就不需要做这一步
# docker run --name Slave12 -v /dockerdata/mysql/Slave2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='password' -d -p 3003:3306 mysql:5.7
然后需要你按照主1和从1的配置流程去配置主1与从2。
下载mysql route
# cd /usr/local/
# wget https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-8.0.11-1.el7.x86_64.rpm
# rpm -ivh mysql-router-8.0.11-1.el7.x86_64.rpm
查看版本确认已安装
# mysqlrouter -V
# find / -name mysqlrouter.conf
# vi /etc/mysqlrouter/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
[keepalive]
interval = 60
# 当主节点宕机后自动由第二节点接手服务
[routing:failover]
# mysql route地址
bind_address = 192.168.247.140
# bind_address使用的默认端口
bind_port = 10000
# 连接几秒算超时
connect_timeout = 3
# 服务器的最大连接数
max_connections = 1024
# 主库地址,以逗号分隔
destinations = 192.168.247.140:3000
# 路由模式,读和写
mode = read-write
# 设置从服务器的负载均衡
[routing:balancing]
bind_address = 192.168.247.140
bind_port = 10001
connect_timeout = 3
max_connections = 1024
mode = read-only
destinations = 192.168.247.140:3002,192.168.247.140:3003
启动mysqlrouter
更改权限
# chmod 666 /var/log/mysqlrouter/mysqlrouter.log
启动
# systemctl start mysqlrouter.service
设置开机启动
# systemctl enable mysqlrouter.service
查看启动状态
# systemctl status mysqlrouter.service
测试负载均衡
# mysql -h 192.168.247.140 -umysql -pweikaixxxxxx -P10001 -e "show variables like 'hostname';"
可见,已转发到俩个从库。
测试查询语句是否正常
主库加入数据
查询
# mysql -h 192.168.247.140 -umysql -pweikaixxxxxx -P10001 -e "SELECT * FROM test.test WHERE name='weikaixxxxxx';"
报错,不允许这个用户使用select。
使用root用户修改查询权限,执行俩次,因为从库已经负载均衡。
mysql -h 192.168.247.140 -uroot -ppassword -P10001 -e "UPDATE mysql.user SET Select_priv='Y' WHERE User='mysql'"
重启俩个从库容器
# docker restart 容器id
再次查询就有了。