当前位置: 首页 > 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软件测试网-软件测试人的精神家园

相关文章:

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

1、MyCat概述 从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server,前端用户可以把它看做是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native&…...

信息系统项目管理师第四版知识摘编:第5章 信息系统工程

第5章 信息系统工程信息系统工程是用系统工程的原理、方法来指导信息系统建设与管理的一门工程技术学科,它是信息科学、管理科学、系统科学、计算机科学与通信技术相结合的综合性、交叉性、具有独特风格的应用学科。5.1软件工程软件工程是指应用计算机科学、数学及管…...

【2023春招】西山居游戏研发岗笔试AK

120min,一共三道算法、两道填空、10道不定项选择 算法题部分 T1-二叉树后序遍历 题面 一个节点数据为整数的二叉搜索树,它的遍历结果可以在内存中用一个整数数组来表示。比如,以下二叉树,它每个节点的左子节点都比自己小,右子节点都比自己大,对它进行后序遍历,结果可以…...

什么是分布式,分布式和集群的区别又是什么?

1. 什么是分布式 ? 分布式系统一定是由多个节点组成的系统。 其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的。 这些连通的节点上部署了我们的节点,并且相互的操作会有协同。 分布式系统对于用户而言&a…...

Cellchat和Cellphonedb细胞互作一些问题的解决(error和可视化)

今日的内容主要解决两个问题,一个是cellchat的代码报错问题,因为已经有很多人提出这个问题了。第二个是Cellphonedb结果的可视化,这里提供一种免费的很实用的快捷可视化方法。其实这些问题只要自己思考都是能明白的。 Cellchat和cellphonedb细…...

大文件分片上传的实现【前后台完整版】

在一般的产品开发过程中,大家多少会遇到上传视频功能的需求,往往我们采用的都是对视频大小进行限制等方法,来防止上传请求超时,导致上传失败。这时候可能将视频分片上传可以对你的项目有一个小小的体验优化。 本片文章前端是vue&…...

Java序列化面试总结

Java序列化与反序列化是什么? Java序列化是指把Java对象转换为字节流的过程,而Java反序列化是指把字节流恢复为Java对象的过程。 序列化: 序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。核心作用是对象…...

fs的常用方法

以下是fs模块的一些常用方法: 1. 读取文件内容 使用fs.readFile()方法读取文件内容。该方法接收两个参数:文件路径和回调函数。回调函数的参数包括错误信息和文件内容。 javascript const fs require(fs); fs.readFile(/path/to/file, (err, data)…...

【华为OD机试 2023最新 】字符串重新排列、字符串重新排序(C++ 100%)

文章目录 题目描述输入描述输出描述用例题目解析C++题目描述 给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整:对每个单词字母重新按字典序排序 2、单词间顺序调整: 1)统计每个单词出现的次数,并按次数降序排列 2)次数相同,按…...

Matlab自动消除论文插图白边的7种方法

通过Matlab所绘制的插图,如不进行一定的调整,其四周往往存在一定范围的白边。 白边的存在会影响数据展示效果,有时也会给论文的排版造成一定麻烦。 要想消除白边,一种简单的方法是,在导出插图后,用其它软…...

Python每日一练(20230330)

目录 1. 存在重复元素 🌟 2. 矩阵置零 🌟🌟 3. 回文对 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1…...

面试官:Tomcat 在 SpringBoot 中是如何启动的(二)

文章目录 总结彩蛋我们再看看Tomcat类的源码: //部分源码,其余部分省略。 public class Tomcat {//设置连接器public void setConnector(Connector connector) {Service service = getService(...

软件测试岗位中,如何顺利拿下50K+?送你一份涨薪秘籍

随着科技发展以及5G时代的到来,IT行业早已发生翻天覆地的变化。已不是当初你认为只要有好点子就能立马起盘做项目的时代了。在IT行业高速发展的时期中“软件测试行业”仍然是热门行业之一。软件行业的高速发展必然带来更多的岗位,正如IT行业发展需要有开…...

java webflux函数式实现数据结构

我前面写的文章 java webflux注解方式写一个可供web端访问的数据接口 带大家写了个注解方式实现的webflux 首先 使用函数式时 您需要自己初始化服务器 使用函数式需要两个接口 分别是 RouterFunction 和 HandlerFuncion RouterFunction主要的作用就是分别一下任务 例如 添加 直…...

百度文心一言可以完胜ChatGPT的4点可能性

文心一言,百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。但说实话,很多人拿他与ChatGPT相对比&#x…...

大型分布式架构设计

大型网站的特点 大型网站架构技术 大型网站架构技术-架构模式 大型网站架构技术-高性能架构 以用户为中心,提供快速的访问体验。主要体现在:响应快、并发能力高和性能稳定。 大型网站架构技术-高可用架构 大型网站在任何时候都应该可以正常访问&#…...

基于springboot实现校园在线拍卖电商系统【源码】

基于springboot实现校园在线拍卖系统演示开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&…...

SaaS智慧校园源码,电子班牌管理系统 人脸考勤、综合评价系统、请假管理、校务管理

Java智慧校园系统源码 智慧学校源码 小程序电子班牌,前后端分离架构 智慧校园全套源码包含:电子班牌管理系统、成绩管理系统、考勤人脸刷卡管理系统、综合素养评价系统、请假管理系统、电子班牌发布系统、校务管理系统、小程序移动端、教师后台管理系统…...

MONGODB mongodb 一般人不知道的数据类型与使用

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…...

蚁群算法优化

%%%%%%%%%%%%蚁群算法解决 TSP 问题%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%% clear all; %清除所有变量 close all; %清图 clc; %清屏 m 50; %蚂蚁个数 Alpha 1; %信息素重要程度参数 Beta 5; %启发式因子重要程度参数 Rho 0.1; %信息素蒸发系数 G 20…...

山东首版次申报的材料

首版次软件基本知识: 1、 首版次高端软件的定义: 首版次高端软件是指省内企事业单位通过自主开发或者合作开发其功能或性能有重大突破 在该领域具有技术领先优势或者打破市场垄断拥有自主知识产权 尚未取得重大市场业绩的 同产品名称、同一版本号的软件产品。 2、主管部门:山…...

个人时间管理网站—首页的前端实现【源码】

🌟所属专栏:献给榕榕 🐔作者简介:rchjr——五带信管菜只因一枚 😮前言:该专栏系为女友准备的,里面会不定时发一些讨好她的技术作品,感兴趣的小伙伴可以关注一下~👉文章简…...

Python毕业设计推荐

今天给大家推荐4个基于python的毕业设计/课程设计 1 网上商城系统 这是一个基于pythonvue开发的商城网站,平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能…...

使用nodemon时报错:“无法加载文件...,因为在此系统上禁止运行脚本“;windows执行策略修改

报错内容如下图: Windows 系统会对全局安装的脚本进行一个限制,防止恶意脚本执行,所以此处会报错。 如何解决?通过修改 windows 执行策略来解决此问题。 一、什么是 windows 执行策略 Windows 给 PowerShell 设定了一个叫 “…...

网络协议分析期末复习(五)

目录 0.前言 1.PC和PPPOE服务器建立连接的流程以及包含LCP配置选项的PPP帧 -Discovery阶段 -Session阶段 -Terminate阶段 包含LCP配置选项的PPP帧如下 2.ARP的步骤以及过程中的具体ARP报文 Step1:查看路由表项以及本地的ARP缓存表 Step2:发送ARP…...

外贸找客户软件:Yellow Page Spider 8.7.1 Crack

黄页蜘蛛 |黄页提取器 从PAGINE GIALLE中提取数据,电子邮件,公司,协会,商业活动的电话! Yellow Page Spider 8.7.1对于那些在附近或任何意大利地点寻找商业活动、公司、协会、各种俱乐部的人来说,PagineGia…...

博客管理系统(前端页面设计)

文章目录一、预期效果二、博客列表页三、博客详情页四、博客登录页五、博客编辑页一、预期效果 博客登录页: 博客列表页: 博客详情页: 博客编辑页: 目录结构: 大家需要注意,我们下述代码的所有路径都…...

安装yolov5环境

当今世界上,深度学习技术在各个领域都有广泛的应用,因此掌握深度学习技术对于从事人工智能相关工作的人来说是非常重要的。而 YOLOv5 是一个非常流行的目标检测框架,本文将介绍如何在 Ubuntu 系统上安装 YOLOv5 环境。 1.安装 Anaconda Ana…...

IP 归属地查询 API 教你从0到1顺着网线找到键盘侠

写在前面 前一段时间,微博、头条、抖音、知乎等各大互联网平台相继推出了“个人主页、评论显示 IP 属地,用户不能自己开启或关闭”的功能,那么这些平台是如何获取到用户的 IP 地址呢? 本文将从 IP 归属地的技术原理、实际应用场…...

【K8S系列】深入解析Pod对象(二)

目录 序言 1.Volume 简单介绍 2 Projected Volume 介绍 2.1 Secret 2.1.1 yaml讲解 2.1.2 创建Pod 2.2 Downward API 2.2.1 yaml示例 2.2.2 Downward API 支持字段 3 投票 序言 任何一件事情,只要坚持六个月以上,你都可以看到质的飞跃。 在…...