[TOC]
mysql router 高可用架构原理
参考资料mysql router 官方文档
黄锡峰深入浅出MySQL高可用架构第19讲(出钱买的正版,所以应该可以截图)
1. 概述
1-1 存在的意义
官档头一段说的很清楚了 MySQL路由器是InnoDB集群的一部分,并且是一个轻量级的中间件,它提供了透明的路由在您的应用程序和后端MySQL服务器之间。它可以广泛用于各种各样的不同的使用场景,例如提供高可用性和可伸缩性通过有效地将数据库请求指向适当的后端MySQL服务器.
我们生产中一般简单的读写分离结构,一般会存在以下一些问题
为了解决以上的问题,于是官方有了mysql route这个玩意
2-2 读写分离的原理
2.部署
简单的部署一下
#下载
[root@localhost~]#wget https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-2.1.6-linux-glibc2.12-x86-64bit.tar.gz
#启动一台容器
[root@localhost~]#docker run-itd--net=none--privileged=true-v/sys/fs/cgroup:/sys/fs/cgroup:ro--name mysql_router-h mysql_router centos_ali_7:latest/usr/sbin/init
a91bc7685250655889f0e8216f71b075fe7df66b64a896727067febb65f08561
[root@localhost~]#pipework br0 mysql_router172.16.30.17/24@172.16.30.254
#拷贝到容器里面
[root@localhost~]#docker cp./mysql-router-2.1.6-linux-glibc2.12-x86-64bit.tar.gz mysql_router:/mnt
#进入容器,解压,重命名一把梭
[root@localhost~]#dockerexec-it mysql_router bash
[root@mysql_router/]#cd
[root@mysql_router~]#tar xf/mnt/mysql-router-2.1.6-linux-glibc2.12-x86-64bit.tar.gz-C/usr/local/
[root@mysql_router~]#cd!$
cd/usr/local/
[root@mysql_routerlocal]#mv mysql-router-2.1.6-linux-glibc2.12-x86-64bitmysql-router
[root@mysql_routerlocal]#cd mysql-router/
[root@mysql_router mysql-router]#ls
bin data include lib run share
#安装必要的文件
[root@mysql_router mysql-router]#yum install vim-y
#复制配置文件
[root@mysql_router mysql-router]#cp share/doc/mysqlrouter/
License.txt README.txt sample_mysqlrouter.conf sample_mysqlrouter.init
[root@mysql_router mysql-router]#cp share/doc/mysqlrouter/sample_mysqlrouter.conf ect/mysqlrouter.conf
[root@mysql_router mysql-router]#cd/etc/
# 默认配置参数没几个,简单的说下
[root@mysql_router ect]#vim mysqlrouter.conf
[DEFAULT]
logging_folder=/usr/local/mysql-router/#日志文件夹路径
plugin_folder=/usr/local/mysql-router/lib/mysqlrouter#插件文件夹路径
config_folder=/usr/local/mysql-router/ect#配置文件夹路径
runtime_folder=/var/run#pid文件夹路径,即允许的文件夹路径
[logger]
level=INFO#日志运行级别
[routing:basic_failover]#故障切换
# To be more transparent, use MySQL Server port 3306
bind_address=172.16.30.17#类似VIP
bind_port=7001#端口
mode=read-write#读写
destinations=172.16.30.18:3306,172.16.30.19:3306172.16.30.21:3306#后端服务器
[routing:balancing]#负载均衡模式
bind_address=172.16.30.17
bind_port=7002
connect_timeout=3
max_connections=1024
mode=read-only#只读
destinations=172.16.30.18:3306,172.16.30.19:3306172.16.30.21:3306#后端服务器
#配置三台读写分离的服务器(略,很简单就不啰嗦了)
#简单的部署完成,明天来测试和在深入一点