关于Mycat,它是一个阿里的开源项目,用来解决分库分表的海量数据存储和查询优化,关于它的简介,可以直接参考介绍:Mycat简介。

下面对自己的demo做个记录:

我之前从192.168.68.3克隆了一台服务器192.168.68.6(关于克隆可以看我前面的文章),在192.168.68.6上面安装了mysql(mysql安装可以参考我前面的文章)

在192.168.68.3中可以没有mysql(实际中已经安装好了mysql的读写分离,我怕用这个当作mysql会对68.4/68.5机器上的数据造成影响),下面会提到这台机器需要jdk,然后用这台机器来安装mycat,控制其它机器的mysql进行读写操作。

0.准备工作

Mycat是用java写的,所以运行环境需要jdk的支持。我之前没有装,所以把安装步骤说一下:

可以先试下自己有没有装java环境,我输入java提示没有该命令

1)linux版jdk下载:http://www.oracle.com/technetwork/java/archive-139210.html

由于我的虚拟机是64位centos6.5,我下的是1.7.0_80的解压版的

下载之后,我还是放在了/software文件夹下

学会用rz来传文件,直接yum install -y lrzsz安装上传文件工具,安装好之后,进入到要上传的路径下,直接rz命令,就可以将本地的文件上传到该路径下。

2)解压

我把他解压到了/user/local路径下 tar -zxvf jdkxxxxx -C /user/local

3)配置环境变量

解压后,jdk的bin目录所在的路径是/usr/local/jdk1.7.0_80

所以在/etc/profile

export JAVA_HOME=/usr/local/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH
然后source一下,source /etc/profile使配置文件生效

这样再java就有该命令了

1.下载Mycat

官方下载地址:http://dl.mycat.io/

我下的是1.6的解压版

2.解压mycat

同样使用rz工具将它上传到/software文件夹下 并解压到/user/local路径下(解压后的文件名就叫做mycat)

进入到/usr/local/mycat/bin/

它下面的mycat是启动文件

./mycat start 启动

./mycat stop 停止

./mycat restart 重启

./mycat status 查看mycat的启动状态

这样mycat就安装好了

3.mycat分库分表实例

1)需求

前面也提到了,mycat安装在了192.168.68.3这台机器上,并且前提装好了jdk。

192.168.68.6装了个单机版的mysql。在这个上面,创建3个数据库db1/db2/db3,这几个库中都建一张item(商品表)

建表语句很简单

CREATE TABLE `item` (
  `id` int(11) NOT NULL COMMENT '主键id',
  `name` varchar(20) DEFAULT NULL COMMENT '名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

到时想测试下操作192.168.68.3的mycat,进行读和写操作。它是怎么把数据存到192.168.68.6的三个库的各个表中,以及怎么读取 的。

在安装目录的/usr/local/mycat/conf文件夹下,是mycat的各种配置文件存储的地方。

而简单的分库分表操作,需要修改这三个配置文件

schema.xml

server.xml

rule.xml

而文件的修改,如果直接看可能不太方便,可以用notepad++等工具远程连接

插件的下载,地址如下:https://github.com/ashkulz/NppFTP/releases/

插件的安装,地址如下:https://www.cnblogs.com/beijinglaolei/p/7710825.html

schema.xml配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
 
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <!-- auto sharding by id (long) -->
        <table name="item" dataNode="dn1,dn2,dn3" rule="mod-long" />
    </schema>
    <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
        /> -->
    <dataNode name="dn1" dataHost="localhost1" database="db1" />
    <dataNode name="dn2" dataHost="localhost1" database="db2" />
    <dataNode name="dn3" dataHost="localhost1" database="db3" />
 
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="192.168.68.6:3306" user="root"
                   password="root">
        </writeHost>
    </dataHost>
</mycat:schema>
server.xml

<user name="root">
        <property name="password">root</property>
        <property name="schemas">TESTDB</property>
        
        <!-- 表级 DML 权限设置 -->
        <!--         
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>        
         -->
    </user>
注意用户名连接的schema的TESTDB要和schema.xml和保持一致

而连接的默认端口是8066

我用的sqlyog工具,发现查不到表,而用命令行的客户端连接,或使用Navicat连接都没问题

INSERT INTO item(id, NAME) VALUES(1, 'a');
INSERT INTO item(id, NAME) VALUES(2, 'b');
INSERT INTO item(id, NAME) VALUES(3, 'c');
INSERT INTO item(id, NAME) VALUES(4, 'd');
INSERT INTO item(id, NAME) VALUES(5, 'f');
INSERT INTO item(id, NAME) VALUES(6, 'g');
SELECT * FROM item;

插入了6条数据,可以看到查询出来的不是按照顺序的。

而看192.168.68.6的db1/db2/db3的库

db1:

db2:

db3:

虽然分库了,但可以通过排序将不同库中的数据在查询后,在mycat中排序

这可能算是最简单的demo了。后续如果继续深入学习,还会将学习笔记进行更新。

mycat分库分表demo相关推荐

  1. mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

    一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件,运行在代码应用和MySQL数据库之间的应用. 前身: corb ...

  2. docker二进制安装mysql_Docker搭建MySQL读写分离主从模式 分布式数据库中间件Mycat分库分表应用...

    一.MySQL读写分离主从模式 1. 下载镜像 docker pull mysql 当前最新版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Communi ...

  3. MySQL单表膨胀优化之MyCat分库分表

    MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右.但是MySQL单表达到1500W时性能开始急剧下降! 事实上MySQL单表可以存储10亿级数据,只是这时候性能比 ...

  4. 利用MyCAT分库分表

    文章目录 MyCAT分库分表 一.分库分表简介 二.垂直切分---分库 1.思想 2.配置实现 三.水平切分 MyCAT分库分表 一.分库分表简介 在业务数据量过多的时候,而且数据不断持续增长的情况下 ...

  5. MyCat分库分表和读写分离

    文章目录 1.MyCat 1.1.MyCat简介 1.2.Mycat对多数据库的支持 1.3.MyCAT架构 1.4.MyCat分库分表 1.5.MyCat下载与安装 1.5.1.下载mycat 1. ...

  6. mycat分库分表与读写分离

    mycat分库分表与读写分离 Dockerfile搭建mycat 1.创建mycat的配置文件 #新建目录 mkdir /docker/mycat#切换目录 cd /docker/mycat#下载my ...

  7. 细讲MyCat分库分表策略

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

  8. 【mycat】mycat分库分表

    mycat分库分表 Mycat2 一大优势就是可以在终端直接创建数据源.集群.库表,并在创建时指定 分库.分表. 操作之前,请先启动一主一从的mysql服务,启动mycat服务 以下步骤不是必须,看自 ...

  9. mycat分库分表+springcloud微服务小案例实现

    文章目录 1. MyCat综合案例 1.1 案例概述 1.1.1 案例介绍 1.1.2 系统架构 1.1.3 技术选型 1.2 案例需求 1.3 案例环境搭建 1.3.1 数据库 1.3.2 工程预览 ...

最新文章

  1. jQuery插件thickbox在ie下垂直居中问题
  2. Android开发--图形图像与动画(四)--AnimationListener简介
  3. 安装php5、卸载php、安装php7的教程
  4. Linux实战案例(4)CentOS清除用户登录记录和命令历史方法
  5. css before 文字前面竖线_前端进阶: css必知的几个底层知识和技巧
  6. linux学习笔记-chkconfig
  7. KD_Tree 算法
  8. CentOS7 设置防火墙端口
  9. 什么是Asp.net Core?和 .net core有什么区别?(转)
  10. JAVA程序员的学习网站(2)
  11. 自动控制原理思维导图
  12. 【科创人独家】华旦天使张洁:风口是创业者的造物,投资本质是件农活
  13. MySQL学习笔记10:MySQL图形化管理工具 navicat 和 Workbench
  14. PCB布局和绘制的关键操作
  15. 回答华为公司面试题一头牛重800公斤一座桥承重700公斤问牛怎么过桥?
  16. 使用kubeadm工具箱创建kubernetes1.9集群
  17. Python干货项目:【新闻急先锋】新闻API获取谷歌头条新闻
  18. 如何在wampserver添加多个本地网站
  19. 笔记本桌面的计算机突然不见了怎么办,小编教你电脑桌面图标都不见了怎么办...
  20. 软件著作权登记证书免税吗

热门文章

  1. 人脸识别还敢闯红灯?人工智能促智慧城市
  2. socket编程在windows和linux下的区别
  3. 笔划输入法查找算法示例(Lua实现)
  4. 【深度神经网络】五、GoogLeNet网络详解
  5. 激光SLAM源码解析S-LOAM(二)激光里程计的计算
  6. 手机如何访问localhost:8000
  7. 我了解的百度排名算法因素
  8. HC-SR04超声波测距模块
  9. 企业江湖VS管理理性
  10. Oracle10表数据编辑器,Oracle ORACLE 快速批量导入文本数据到数据库(sqlldr工具)方法与分析 (Windows CMD 方式)...