在我们了解了MySQL的主从复制的性能优化之后,紧接着《【MySQL专题】02、性能优化之主从复制》中,我们提及的读写分离,来进行读操作和写操作分散到不同的服务器结构中,同时希望对多个从服务器能提供负载均衡,读写分离和负载均衡是MySQL集群的常规需求,然后MySQL的兄弟公司MariaDB 公司就开发了一种插件式结构,允许用户开发适合自己的插件,这个中间件叫:MaxScale。下面我们就来开始了解MaxScale。 

1、MaxScale 概述

    MariaDB MaxScale是一种数据库代理,可扩展MariaDB Server的高可用性,可伸缩性和安全性,同时通过将其与基础数据库基础架构分离来简化应用程序开发。 

    MariaDB MaxScale采用可扩展的体系结构进行工程设计,以支持插件,从而将其功能扩展到透明负载平衡之外,从而成为例如数据库防火墙。借助用于多个路由器,过滤器和协议的内置插件,可以将MariaDB MaxScale配置为转发数据库请求并根据业务和技术要求修改数据库响应,例如,以屏蔽敏感数据或扩展读取。MaxScale 提供了5类的插件功能,分别如下:

  • 认证

    提供登陆认证功能,MaxScale通过读取并缓存数据库中的user表中的信息,当又连接进来是,先出缓存获取验证,如果没有此用户,会从后端获取更新信息,再次进行验证。
  • 协议

    客户端连接协议和连接数据库协议 
  • 路由

    决定如何把客户端的请求转发给后端数据库服务器?读写分离和负载均衡的功能实现就是通过路由插件完成的。 
  • 监控

    对各个数据库服务器进行监控,例如发现某个数据库服务器响应很慢,那么就不向其转发新的请求。 
  • 日志和过滤

    提供简单的数据库防火墙功能,可以对SQL进行过滤和容错。

2、配置方式&节点介绍

    该实现需要先完成MySQL的主从复制的相关复制结构操作。才能进行下一步操作。主从复制的相关内容,参考《【MySQL专题】02、性能优化之主从复制》。

    按主从复制结构的一主一从的复制结构,本地考虑服务器受限,故MaxScale的不是选择Master节点安装该中间件服务。

  • Master:192.168.202.128
  • Slave:192.168.202.129

3、安装MaxScale 

    MaxScale的下载地址,最新版本2.4.8,实例中使用的是1.4.5,下载地址: https://downloads.mariadb.com/files/MaxScale

  • 安装相关依赖
  • 下载MaxScale的rpm文件
  • 通过rpm文件安装MaxScale

4、配置MaxScale

在配置之前,首先我们在master节点的mysql数据库中为MaxScale创建两个用户,用于监控模块和路由模块。

  • 创建监控用户
  • 创建路由用户

现在我们开始进行配置MaxScale,详细参考如下说明: 

mariadb 索引 mariadb maxscale_mariadb 索引

配置【server1】部分,修改address和port,根据各自的复制模式结构,增加server部分,配置对应的address和port信息,实例中配置如下: 

mariadb 索引 mariadb maxscale_mariadb 索引_02

配置【MySQL Monitor】部分,修改servers为server1、server2(根据实际server结构配置servers),同时修改user和passwd为监控用户 

mariadb 索引 mariadb maxscale_mysql_03

 配置【Read-Write Service】部分,修改servers为server1、server2(根据实际server结构配置servers),同时修改user和passwd为路由用户 

mariadb 索引 mariadb maxscale_数据库_04

PS:由于配置了【Read-Write Service】部分,所以就不需要【Read-Only Service】,删除或者注释掉,否则会冲突。 

保存&退出编辑器!

5、启动MaxScale 

mariadb 索引 mariadb maxscale_mariadb 索引_05

PS:判断是否启动成功! 

查看MaxScale的响应端口是否启动就绪 

mariadb 索引 mariadb maxscale_mariadb 索引_06

 从上列表,可以发现MaxScale有两个4006和6603端口启动成功,分别是Read-Write Listener、MaxAdmin Listener的端口,分别用于连接MaxScale和MaxScale管理器。 

登陆MaxScale管理器,查看数据库连接状态,默认的用户名和密码是 admin/mariadb 

mariadb 索引 mariadb maxscale_性能优化_07

从上列表,可以发现master和slave均正常运行!同时MaxScale已经连接上了master和slave节点!

6、验证 

在master创建一个测试用户 

mariadb 索引 mariadb maxscale_数据库_08

使用MySQL命令客户端连接MaxScale 

mariadb 索引 mariadb maxscale_数据库_09

当有事务开启后,路由自动切换到master,普通的查询操作就可以放到slave上,通过MaxScale中间件可实现MySQL的读写分离和负载均衡。

7、思考 

如何结合MaxScale实现的MySQL读写分离和负载均衡实战到实际应用中?后期后给大家介绍与Java语言结合使用的实战。

8、参考资料