MySQL Router是MySQL官方推出的一个轻量级MySQL中间件是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品.但是和mysql-proxy有区别。mysqlroute使用了两个端口进行读写分离
专注于为中小企业提供成都网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业桑珠孜免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
默认端口号 | 作用 | 说明 |
---|---|---|
7001 | 默认的是读写端口 | mode = read-write默认情况下第一台主数据库为写主库,当第一台主数据库DOWN机后,第二台数据库被提升为主库,如果第一台不出问题,第二台是不会被使用的。可以作高可用使用 |
7002 | 默认是读端口 | 如果设置以后,根据设置的列表进行轮询使用 |
MySQL Router接受前端应用程序请求后,根据不同的端口来区分读写,把连接读写端口的所有写和查询发往主库,把连接只读端口的查询以轮询方式发往多个从库,从而实现读写分离的目的。读写返回的结果会交给MySQL Router,由MySQL Router返回给客户端的应用程序。
我理解的是mysql-proxy在使用的时候与连接单台数据库操作一样,而mysql route则是把多台主机的读写集中在一起,进行读写分离,在使用的时候还是需要程序进行改动。具体性能测试,在接下的文章中会慢慢测试
安装可以使用多种方式,因为测试我选择了二进制包
安装包下载:
http://dev.mysql.com/downloads/router/
文档:
http://downloads.mysql.com/docs/mysql-router-en.pdf
我选择了二进制安装:
系统是centos7-1604-mini
1.下载
cd /usr/local/ && wget -c https://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-2.0.4-linux-glibc2.12-x86-64bit.tar.gz
cd /usr/local/&& tar-zxvf mysql-router-2.0.4-linux-glibc2.12-x86-64bit.tar.gz
ln-s mysql-router-2.0.4-linux-glibc2.12-x86-64bit/ mysql-router
2.创建必要的文件,复制配置文件
mkdir /etc/mysql-route/
mkdir /var/log/mysql-route
chown mysql:mysql /var/log/mysql-route
cp /usr/local/mysql-router/share/doc/mysqlrouter/sample_mysqlrouter.ini /etc/mysql-route/mysqlrouter.conf
mysqlrouter.conf修改
[DEFAULT]logging_folder = /var/log/mysql-route
plugin_folder = /usr/local/mysql-router/lib/mysqlrouter
config_folder = /etc/mysql-route
runtime_folder = /var/run/ [logger]level = INFO
# 主节点故障转移配置
[routing:basic_failover]
# 写节点地址
bind_address=0.0.0.0
# 写节点端口
bind_port = 7001
# 模式,读写
mode = read-write
# 默认情况下第一台主数据库为写主库,当第一台主数据库DOWN机后,第二台数据库被提升为主库
destinations = 192.168.10.191:3306
# 从节点负载均衡配置
[routing:balancing]
# 绑定的IP地址
bind_address=0.0.0.0
# 监听的端口bind_port = 7002
# 连接超时时间
connect_timeout = 3
# 最大连接数
max_connections = 1024
# 后端服务器地址.默认读进行轮询
destinations = 192.168.10.192:3306,192.168.10.191:3306
# 模式:读还是写
mode = read-only
[keepalive]interval = 60
8、启动mysqlrouter
mysqlrouter --config /usr/local/mysqlrouter/etc/mysqlrouter.conf &测试通过mysqlrouter这个中间件来连接mysql库
mysql -h227.0.0.1 -uappuser -p123456 -e"show databases;" -P7001