当前位置:首页 > mycat > 正文内容

mycat分库分表 简单示例

关中浪子3年前 (2022-01-26)mycat1267
买泛域名SSL证书 送5斤装现摘猕猴桃一箱、同时提供技开源商城搭建免费技术支持。
泛域名ssl证书 239元1年送1个月、单域名39元1年,Sectigo(原Comodo证书)全球可信证书,强大的兼容性,高度安全性,如有问题7天内可退、可开发票
加微信VX 18718058521 备注SSL证书
【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价

关于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了。后续如果继续深入学习,还会将学习笔记进行更新。


找梯子最重要的就是稳定,这个已经上线三年了,一直稳定没有被封过,赶紧下载备用吧!

扫描二维码推送至手机访问。

版权声明:本文由码农翻生发布,如需转载请注明出处。

本文链接:https://lubojian.cn/post/93.html

分享给朋友:

相关文章

MyCat业务上规避跨库Join实现方式

全局表如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或者数据量不大很少变动的表,这些表往往不是特别大,而且大部分的业务场景都会用到,那么这种表适合于 Mycat 全局表,无须对数据进行切分,只要在所有的分片上保存一...

mycat数据库中间件之--概述作用与使用场景(一)

mycat数据库中间件之--概述作用与使用场景(一)

1、 mycat概述       前身是阿里的cobar,MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。