在之前将HDFS时,讲过一个数据节点dataNode的概念还NameNode的概念,mycat使用的与其相似,在mycat中,dataNode就是数据库,而mycat就充当的是NameNode的节点。是一个中间件。

mycat的两大核心:

  1.分库分表(解决单表数据量过大的问题)

  2.独写分离(解决单个数据库访问量大,压力大的问题)

什么是分库分表?

  将一个数据量大的表数据分放在不同的数据节点上,这种模式就称为分库分表。

在分库分表中,所有的数据节点都是平等的,没有主从关系。

mycat实现分库分表:

  需求:使用两个mysql服务器,通过mycat添加数据,实现一条数据在mysql01,一条数据在mysql02上

  使用规则:mod-long

mycat是使用java编写的,因此需要先配置jdk环境,在安装mycat

1.官网下载mycatxxx.tar.gz

2.xftp上传到linux中的apps目录中

3.解压压缩包

tar -zxvf Mycatxxx.tar.gz

4.配置环境变量(与配置jdk环境变量相同)

vim /etc/profile
#编辑mycat环境变量
export MYCAT_HOME=/home/apps/mycat
export PATH=$PATH:$MYCAT_HOME/bin

至此,mycat安装完成。但是要使用mycat的分库分表还需要配置几个文件:

进入mycat目录下的conf目录:

  1.修改server.xml文件:

2.修改schemas.xml文件:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/"><!--schema:相当于mysql中的数据库name:这个数据库的名字checkSQLschema:检查sql语句是否错误,默认为false,不需要为true,交给mysql来检查就可以了sqlMaxLimit:最大执行sql语句数量,可以一次性执行的sql语句数量--><schema name="TEACH" checkSQLschema="false" sqlMaxLimit="100"><!--相当于数据库中的表,这个表并不是真实存在的,而是通过mysql映射过来的,因此mysql中一定要存在与这个表的名字相同的表,这样才能映射进来dataNode:数据节点,上一篇分析HDFS时,已经讲过数据节点的概念,就是mysql数据库,节点之间以,分隔rule:规则,使用mycat实现分库分表有十大规则,也就是说怎样实现分片,是把每天的数据都分一个片,还是按照编号范围,每100条数据分一块...等等,具体十大分片规则,可以单独去看,这里使用mod-long,轮询的方式,第一条存mysql1,第2条存mysql2--><table name="student" dataNode="dn1,dn2" rule="mod-long" /></schema><!--数据节点:就是数据库服务器节点name:节点的名字,与上面相对应,上面有几个,下面就要有几个dataHost:数据节点地址,与下面的dataHost标签的名字向对应database:真实的数据库名, mycat中的TEACH数据库是虚拟的,它里面的表都是通过真实的数据库中的表映射进来的,这里指的是mysql中的真实的数据库--><dataNode name="dn1" dataHost="localhost1" database="teach" /><dataNode name="dn2" dataHost="localhost2" database="teach" /><!--dataHost:真实的数据库的节点地址信息name:给该节点起名字,通过dataNode引用该节点maxCon:最大连接数minCon:嘴小连接数balance:负载均衡(在独写分离中讲解,这里用不到)writeType:写入方式(读写分离的配置,这里用不到,下一篇讲)dbType:数据库类型,是mysql还是oracle,redis...等等,本来mycat是只支持mysql的,但是发展到现在支持多种数据库dbDriver:数据库驱动(使用本地驱动->mycat提供的驱动)switchType:切换方式,读写分离中讲slaveThreshold:主从复制延时(读写分离的属性,下篇讲)--><dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><!--heartbeat:心跳,mycat一直检测mysql的user表(心跳),当接收不到心跳时,就会认为这台mysql宕机了,就不会在对该节点做增删改查等操作--><heartbeat>select user()</heartbeat><!--writeHost:写节点,当独立存在时,则该节点又读又写,当与readHost同时存在时,则表示只写,不进行读操作host属性只是标识了该台数据库的操作的内容,可以随意定义,不能重复--><writeHost host="write1" url="192.168.226.159:3306" user="root"password="123456"/></dataHost><dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="write2" url="192.168.226.160:3306" user="root"password="123456"/></dataHost></mycat:schema>

3修改rule.xml

因为本次只使用了mod-long规则,其他的没有使用,这里count表示数据库的dataNode节点总数

配置完毕,启动mycat,因为配置了环境变量,可以在任意地方执行命令:

mycat console

然后使用mysql连接mycat,此时如果真实的mysql数据中没有数据库及表时,无法映射,因此mycat中的表会显示不存在,需要在真实的mysql数据库上创建表,然后通过mycat添加数据,可以看到一条数据存入mysql1,一条数据存入mysql2的情形。

转载于:https://www.cnblogs.com/Zs-book1/p/11573444.html

mycat学习笔记3:分库分表相关推荐

  1. 学习笔记:分库分表之中间件Mycat实战

    点关注,不迷路! 本文已整理成文档! 文章目录 1.数据切分概念 垂直切分 水平切分 2.什么是Mycat 应用场景 3.Mycat中的核心概念及配置 核心概念 安装与配置 linux安装 4. My ...

  2. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

  3. MyCat(三)分库分表

    1.简介 分库:将原本一个数据库中的数据,拆分到多个数据库进行保存,然后我们通过访问一个数据库,在MyCat中成为逻辑库. 分表:如果一个数据表的数据量已经超过千万,那么查询速度会比较慢,这时候可以考 ...

  4. MyCat 读写分离与分库分表

    一.Mycat 简介 Mycat 是一个开源的数据库中间件,可以解决分布式数据库环境下的大多数问题,如读写分离.分库分表等,除此之外,它还具备以下特性: 支持 MySQL.Oracle.DB2.SQL ...

  5. Mycat 读写分离 数据库分库分表 中间件 安装部署,及简单使用

    MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服 ...

  6. mycat 分库分表

    文章目录 分库分表 为什么要分库分表? 分库 数据库准备 配置mycat 分表 分表实现(取模) Mycat 的分片 join 分库分表 分库:从单个数据库拆分成多个数据库的过程,将数据散落在多个数据 ...

  7. mycat 分表子查询_MyCat分库分表策略详解

    在我们的项目发展到一定阶段之后,随着数据量的增大,分库分表就变成了一件非常自然的事情.常见的分库分表方式有两种:客户端模式和服务器模式,这两种的典型代表有sharding-jdbc和MyCat.所谓的 ...

  8. 细讲MyCat分库分表策略

    作为服务端模式的典型代表,MyCat不仅提供了丰富的分库分表策略,也提供了非常灵活的读写分离策略,并且其对客户端的侵入性是非常小的.本文主要讲解MyCat主要提供的分库分表策略,并且还会讲解MyCat ...

  9. MyCAT读写分离分库分表

    MyCAT读写分离及分库分表 第1章 MyCAT分布式系统解决方案 1.1 分布式系统介绍: 分布式系统特性: 1. 透明性: a) 分布式系统对用户来说是透明的,一个分布式系统在用户面前的表现就像一 ...

  10. 关于mysql数据库分库分表、事务一致性问题的学习

    很多人张嘴就是分库分表,好像不分库分表就不算牛逼的系统,不谈分库分表就没有逼格一样. 个人觉得,在设备配置别太挫.业务拆分别太渣.sql写法别太low.单表数据不上亿的情况下,靠读写分离.索引优化.表 ...

最新文章

  1. Python(1) 整型与浮动型
  2. Python与MySQL
  3. 付费会员制,如何赋能产品?
  4. python适合做什么生意_适合Python的5大练手项目,你练了么?
  5. linux vsftpd关于500 OOPS错误问题解决
  6. Linux资料分享,强势来袭!
  7. 注解@Cacheable(value =“XXX“) 实现缓存 -- 失效原因
  8. 黑马程序员--C语言基础之--sizeof()运算符的使用以及注意
  9. 二级公共基础知识_计算机二级选择题(公共基础知识)
  10. 周末送新书 | 一文了解预训练语言模型!
  11. HDU 4679 Terrorist’s destroy
  12. ​​​​​​​CUDA ---- Shared Memory
  13. 程序员应该具备的12种能力
  14. Java数组排序的方法
  15. 常用计算机维修方法有哪些,计算机常见硬件故障的诊断及其处理分析
  16. Excel-事件(Workbook、Worksheet、Range、OnKey/OnTime)
  17. 课程设计小组报告——基于ARM实验箱的捕鱼游戏的设计与实现
  18. 4种公众号文章编辑器亲测对比
  19. 构建风控评分卡模型介绍(WOE/KS/ROC)
  20. Vue中directive的使用

热门文章

  1. 第一章 四大组件 之 Activity(一)
  2. 光纤通信工程-PDH和SDH介绍(七)
  3. Bogo游戏陪玩开发系统特性搭建及源码
  4. 几行代码,网盘链接提头来见
  5. 一个优秀的程序员应该具备哪些技能和修养?
  6. oracle 11g r2(64bit) for windows7,Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
  7. 20110510 Brew工程师培训笔记——第九章 IDisplay使用简介
  8. CentOS配置服务器静态ip
  9. 妈,我在北京做的是正经工作!
  10. 电脑常见问题经验分享