Mycat分表分库
一、Mycat介绍
Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。
二、Mycat基础环境搭建
首先需要下载Mycat必需的一些环境:
- jdk下载(1.7以上) –mycat是基于java开发的,需要java编译环境
- mysql
- mycat
1) JDK 下载
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
注:必须 JDK7 或更高版本.
2) MySQL 下载
http://dev.mysql.com/downloads/mysql/5.5.html#downloads
注:MyCAT 支持多种数据库接入,如:MySQL、SQLServer、Oracle、MongoDB 等,推荐使用
MySQL 做集群。
3) MyCAT 项目主页
https://github.com/MyCATApache/
注:MyCAT 相关源码、文档都可以在此地址下进行下载
三、Mycat配置
为了快速跑起一个Mycat demo,我们先在本地数据库里面建立test1和test2数据库,创建一个名为opt的表,字段为id(int)及name(varchar)
Mycat的主要配置文件在其conf目录下面,分别是server.xml、schema.xml和rule.xml,为快速启动mycat,我们按照配置的顺序和主要配置项说明。
1、server.xml 服务配置
这里主要配置mycat的用户和权限信息,这里的账户用于后面连接mycat使用。
快速入门可以简单这样配置:
schemas是后面schema.xml里面配置的DB,例如:我这里配置了一个用户名为user,密码为666666的账户,默认只能访问test的DB
<user name="user">
<property name="password">666666</property>
<property name="schemas">test</property>
</user>
2、schema.xml 数据库配置
这里主要配置数据库信息,一个schema就是一个逻辑库,可以理解为Mycat管理的一个数据库DB(实际上不存在,是一个虚拟的概念)name属性和server.xml里面对应。
table是Mycat的逻辑表,这里我们配置一个名为opt的逻辑表
dataNode属性是将其绑定在真实数据库中的数据节点中,这里我们配置了两个dataNode,分别是test1数据库和test2数据库,注意,这两个数据库的真实表名需和table的name一致
dataHost属性就是我们熟悉的mysql连接,这里我们都用本地作为一台服务器,也可以配置不同服务器上的不同mysql,这里还可以配置读写分离,我们先不考虑。
rule属性就是分片规则,这里用的是名称,需在下一步的rule.xml里面定义好
<schema name="test" checkSQLschema="false" sqlMaxLimit="100">
<!-- 分片表配置 -->
<table name="opt" dataNode="dn$1-2" rule="rule1" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="test1" />
<dataNode name="dn2" dataHost="localhost1" database="test2" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="localhost:3306" user="root"
password="666666" />
</dataHost>
3、rule.xml 规则配置
这里我们主要配置的是分片规则,Mycat支持很多分片规则,我们使用的是一个较为简单的取模规则,即根据columns标签里面的id属性来取模,count属性定义为数据节点的个数。
<tableRule name="rule1">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">2</property>
</function>
四、Mycat启动
1、window启动
window上启动mycat需要用cmd命令到mycat的bin目录下面,执行startup_nowrap.bat命令成功即可
2、linux启动
同样,到bin目录下面,执行startup_nowrap.sh命令成功即可
当看到如下图显示的启动成功标识说明mycat启动成功 
注:若出现错误,可在其logs目录下面查看错误信息,一般为配置错误
五、Mycat使用
启动mycat成功后,我们通过本地sql连接工具,如Navicat建立到mycat的链接,其默认端口是8066,如果连接成功,可通过命令行执行一条插入语句的sql,如
INSERT INTO opt(id,name) VALUES(1,”3434”)查看是否插入到指定分库的表里面,若成功,说明Mycat可以正常使用
如图所示:插入的数据分布到指定的库里面 
注:mycat的插入语句必须有分片规则的字段,否则无法判定是插入哪个数据库。
六、Mycat更多细节
以上只是简单介绍了如何快速启动一个Mycat的DEMO,从零开始,关于更详细的配置信息及更为复杂的分片规则和sql,可以参考Mycat的官方介绍文档
http://www.mycat.org.cn/document/Mycat_V1.6.0.pdf
Mycat分表分库的更多相关文章
- 使用MyCat分表分库原理分析
Mycat可以实现 读写分离 分表分库 主从复制是MySQL自带的哈~ 关于分片取模算法: 根据id进行取模 根据数据库集群的数量(或者说是表数量,mycat里面一个表对应一个库) 使用MyCat ...
- 重新学习Mysql数据13:Mysql主从复制,读写分离,分表分库策略与实践
一.MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量. 关于数据库的扩展主要包括:业务拆分.主从复制.读写分离.数据库分库 ...
- 学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...
- 学会数据库读写分离、分表分库——用Mycat
系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...
- (转)学会数据库读写分离、分表分库——用Mycat,这一篇就够了!
原文:https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理 ...
- mycat原理及分表分库入门
1.什么是MyCat: MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原 ...
- 数据库读写分离、分表分库——用Mycat
转: https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据 ...
- 分表分库解决方案(mycat,tidb,shardingjdbc)
公司最近有分表分库的需求,所以整理一下分表分库的解决方案以及相关问题. 1.sharding-jdbc(sharding-sphere) 优点: 1.可适用于任何基于java的ORM框架,如:JPA. ...
- .NETCore 下支持分表分库、读写分离的通用 Repository
首先声明这篇文章不是标题党,我说的这个类库是 FreeSql.Repository,它作为扩展库现实了通用仓储层功能,接口规范参考 abp vnext 定义,实现了基础的仓储层(CURD). 安装 d ...
随机推荐
- B1786 [Ahoi2008]Pair 配对 逆序对+dp
这个题有点意思,一开始没想到用dp,没啥思路,后来看题解才恍然大悟:k才1~100,直接枚举每个-1点的k取值进行dp就行了.先预处理出来sz[i][j] i左边的比j大的数,lz[i][j] i ...
- How to add dependency on a Windows Service AFTER the service is installed
his can also be done via an elevated command prompt using the sc command. The syntax is: sc config [ ...
- Agri-Net(prim)
http://poj.org/problem?id=1258 #include<stdio.h> #include<string.h> ; <<; int map[ ...
- HDU1560 DNA sequence
题目: The twenty-first century is a biology-technology developing century. We know that a gene is made ...
- word2vec改进之Hierarchical Softmax
首先Hierarchical Softmax是word2vec的一种改进方式,因为传统的word2vec需要巨大的计算量,所以该方法主要有两个改进点: 1. 对于从输入层到隐藏层的映射,没有采取神经网 ...
- Phoenix与Squirrel 是什么?
不多说,直接上干货! 前言 Phoenix是HBase的开源SQL引擎. squirrel是windows上Phoneix可视化工具. Phoenix的官网 http://phoenix.apach ...
- 微信小程序特殊字符转义方法——&转义&等等
在我编写公司小程序的过程中,有一次在网页端添加了一张图片,结果在小程序端访问失败了,究其原因,竟然是因为该图片名称中有一个“&”符号,网页端添加后,自动转义成了“&”存储到了数据库.当 ...
- jquery中的left和top
left 和 top /*1. 获取元素基于定位容器的位置*/ /*返回的是对象 属性 left top */ var position = $('.inner').position(); conso ...
- HTML 5概述
HTML语言是一种简易的文件交换标准,用于物理的文件结构,它旨在定义文件内的对象和描述文件的逻辑结构,而并不定义文件的显示.由于HTML所描述的文件具有极高的适应性,所以特别适合于WWW的出版环境. ...
- [2月1号] 努比亚全机型ROM贴 最全最新NubiaUI5.0 ROOT 极速体验
前言 感谢在开发过程中mandfx和dgtl198312予以的帮助!本帖将整理所有Nubia手机的最新刷机包,还有少数机型未制作刷机包,需要的机油可以联系我制作recovery以及刷机包加群23722 ...