当前位置: 首页 > news >正文

【MySQL专题】03、性能优化之读写分离(MaxScale)

   在我们了解了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,详细参考如下说明: 

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

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

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

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

保存&退出编辑器!

5、启动MaxScale 

PS:判断是否启动成功! 

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

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

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

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

6、验证 

在master创建一个测试用户 

使用MySQL命令客户端连接MaxScale 

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

7、思考 

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

8、参考资料

  • MaxScale 2.2 Getting-Started - MariaDB Knowledge Base
  • 轻松实现MySQL读写分离 - 简书
  • https://www.cnblogs.com/ddzj01/p/11573842.html
  • Maxscale安装-读写分离(1) – 运维生存时间
  • http://www.ttlsa.com/mysql/maxscale-right-read-w
http://www.lryc.cn/news/43736.html

相关文章:

  • Redis7高级之BigKey(二)
  • flex弹性盒子
  • [Java Web]Cookie | 一文详细介绍会话跟踪技术中的Cookie
  • 这可能是2023最全的Java面试八股文,共计1658页,Java技术手册的天花板
  • 字节流及存放本地文件上传和下载文件
  • 【翻译】下一步:Go 泛型
  • 如何简单实现ELT?
  • 细思极恐,第三方跟踪器正在获取你的数据,如何防范?
  • Java基础之==,equal的区别(温故而知新)-----点点滴滴的积累
  • SpringBoot项目使用切面编程实现数据权限管理
  • 亚马逊测评是做什么的,风险有哪些?
  • 安科瑞导轨式智能通讯管理机
  • vs2010下 转换到 COFF 期间失败: 文件无效或损坏
  • 托福高频真词List19 // 附托福TPO阅读真题
  • Go语言项目标准结构应该如何组织的?
  • 设计模式简介
  • #详细介绍!!! 线程池的拒绝策略(经典面试题)
  • 正则表达式作业
  • 《扬帆优配》交易拥挤度达历史极值 当前A股TMT板块性价比几何?
  • C/C++开发,无可避免的IO输入/输出(篇三).字符串流(内存流)IO处理
  • 什么是HTTP请求?【JavaWeb技术】
  • 浅聊面试这件事
  • 【致敬未来的攻城狮计划】连续打卡第7天+瑞萨RA2E1点亮LED
  • Sam Altman专访:GPT-4没太让我惊讶,ChatGPT则让我喜出望外
  • 弯道超车的机会
  • 【设计模式】创建型模式之原型模式
  • KMP算法——我欲修仙(功法篇)
  • 【嵌入式Linux学习笔记】QT在Linux嵌入式设备上的使用
  • js根据数据关键字实现模糊查询功能
  • java获取对象属性