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

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

1、MyCat概述 

    从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server,前端用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是读写分离、数据分片(垂直拆分分库、水平拆分分表、垂直拆分+水平拆分)和多数据源整合。 

    Mycat发展到目前版本,已经不在是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB、NOSQL方式等存储,未来还会支持更多类型的存储。而在最终用户看来,无论是那种存储方式,在Mycat里,都是一个传统的数据库表,支持标准的SQL语句进行数据的操作,这样一来,对前端业务系统来说,可以大幅度降低开发难度,提升开发速度,在测试阶段,可以将一表定义为任何一种Mycat支持的存储方式,比如MySQL的MyASM表、内存表、或者MongoDB、LeveIDB以及号称是世界上最快的内存数据库MemSQL上。

2、用途&环境介绍 

  • 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换。
  • 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片。
  • 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化。
  • 报表系统,借助于Mycat的分表能力,处理大规模报表的统计。
  • 代替Hbase,分析大数据。
  • 询的记录需要在3秒内查询出来结果, 除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择。
  • 该实现需要先完成MySQL的主从复制的相关复制结构操作。才能进行下一步操作。主从复制的相关内容,参考《【MySQL专题】02、性能优化之主从复制》。

    PS:本地服务器采用的主从复制结构模式为一主一从的复制结构
    • Master:192.168.202.128
    • Slave:192.168.202.129
    • Mycat:192.168.202.130

3、安装MyCat 

  • JDK安装&配置文档:

    参考:文档Linux -Centos  常见配置(静态IP、YUM... 

    链接:http://note.youdao.com/noteshare?id=f2d067e276add283a4db09e5536ff5c9&sub=WEB1e60f94040bd9e345cb536fbd846c9c9 
  • Mycat安装
    • 下载Mycat

    • 解压&环境变量

          解压mycat,根据自己部署规则,本人选择将mycat部署在/usr/local/目录下 ,所以我解压mycat后,移动mycat 到/usr/local/目录下,由于为了方便我们日常管理mycat,对其进行环境变量配置,分别需要执行如下命令操作。(这里就不展示命令的执行过程呢)

    • Mycat配置

          在配置mycat之前,我们需要在mysql主复制节点mysql-master节点上,创建两个mysql用户,用于mysql数据的写入和读。(y由于mysql数据库刚安装,默认mysql的root账号密码为空,所以这里登陆就不需要密码登陆,若需要管理root账号,可以详细去配置root账号的安全权限问题,这里就不一一介绍呢),登陆成功后,执行相应的账号的创建、授权等(注意:生产环境要尽量减少权限,注意安全问题)

         

          接下来,我们进入主题,mycat的文件配置。首先介绍一下mycat的目录结构(如果缺失tree命令,可以通过yum install tree -y 进行安装,这里不详细介绍,本文核心是介绍mycat部署):



      conf目录下存放的配置文件

         server.xml是Mycat服务器参数调整和用户授权的配置文件 
         schema.xml是逻辑库定义和表以及分片定义的配置文件,rule.xml是分片规则的配置文件, 分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改,需要重启mycat或者通过9066端口reload。 

      lib目录下主要存放mycat依赖的一些jar文件。

      logs:日志存放在logs/mycat.log中,每天一个文件


        日志配置是在conf/log4.xml中,根据自己的需要可以调整输出级别. 

        注意:Linux下部署安装MySQL,默认不忽略表名大小写,需要手动到/etc/my.cnf 下配置 lower_case_table_names=1 使Linux环境下MySQL忽略表名大小写,否则使用MyCAT的时候会提示找不到表的错误! 

      配置核心server.xml 和 schema.xml文件,配置详情分别如下(本文档介绍的是基础版的mycat运用,若需要更深程度的使用,可以深度研究 mycat相关知识或者持续关注文档更新): 



      关于schema.xml文件部分参数说明,不同参数配置,代表mycat采取的机制策略不一样: 

4、启动MyCat 

由于我们配置了mycat的环境变量,所以可以直接使用mycat命令操作:

直接执行mycat命令可以看出,mycat提供了 指定相关命令操作,服务器的启动、停止,重启等具体命令操作,这里我们需要启动mycat,直接执行mycat  start 即可。 

5、验证 

通过刚创建两个账号,在第三方工具连接mycat,若能成功,表示配置完成; 

6、思考 

  • Mycat 如何进行高可用服务架构搭建?

  • Mycat中间件宕机如何维护?

  • Mycat 中间件的另一特性--数据拆分如何实现?

  • Mycat 中间件如何多语言?

  • Mycat 中间件的运行原理和实现原理?

7、参考资料

  • http://mycat.io/
  • https://www.csdn.net/article/2015-07-16/2825228
  • 从零开始
  • MyCAT简易入门 - iVictor - 博客园
  • 使用Mycat 做简单的读写分离(一) - 大漠小狼的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园
http://www.lryc.cn/news/44030.html

相关文章:

  • 信息系统项目管理师第四版知识摘编:第5章 信息系统工程
  • 【2023春招】西山居游戏研发岗笔试AK
  • 什么是分布式,分布式和集群的区别又是什么?
  • Cellchat和Cellphonedb细胞互作一些问题的解决(error和可视化)
  • 大文件分片上传的实现【前后台完整版】
  • Java序列化面试总结
  • fs的常用方法
  • 【华为OD机试 2023最新 】字符串重新排列、字符串重新排序(C++ 100%)
  • Matlab自动消除论文插图白边的7种方法
  • Python每日一练(20230330)
  • 面试官:Tomcat 在 SpringBoot 中是如何启动的(二)
  • 软件测试岗位中,如何顺利拿下50K+?送你一份涨薪秘籍
  • java webflux函数式实现数据结构
  • 百度文心一言可以完胜ChatGPT的4点可能性
  • 大型分布式架构设计
  • 基于springboot实现校园在线拍卖电商系统【源码】
  • SaaS智慧校园源码,电子班牌管理系统 人脸考勤、综合评价系统、请假管理、校务管理
  • MONGODB mongodb 一般人不知道的数据类型与使用
  • 蚁群算法优化
  • 山东首版次申报的材料
  • 个人时间管理网站—首页的前端实现【源码】
  • Python毕业设计推荐
  • 使用nodemon时报错:“无法加载文件...,因为在此系统上禁止运行脚本“;windows执行策略修改
  • 网络协议分析期末复习(五)
  • 外贸找客户软件:Yellow Page Spider 8.7.1 Crack
  • 博客管理系统(前端页面设计)
  • 安装yolov5环境
  • IP 归属地查询 API 教你从0到1顺着网线找到键盘侠
  • 【K8S系列】深入解析Pod对象(二)
  • 从3千到3万,我的测试之路真的坎坷