1.Mycat介绍

Mycat 是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。

2.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 相关源码、文档都可以在此地址下进行下载

3.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>

4.Mycat启动

1)window启动:

window上启动mycat需要用cmd命令到mycat的bin目录下面,执行startup_nowrap.bat命令成功即可

2)linux启动:

同样,到bin目录下面,执行startup_nowrap.sh命令成功即可

当看到如下图显示的启动成功标识说明mycat启动成功



注:若出现错误,可在其logs目录下面查看错误信息,一般为配置错误

5.Mycat使用

启动mycat成功后,我们通过本地sql连接工具,如Navicat建立到mycat的链接,其默认端口是8066,如果连接成功,可通过命令行执行一条插入语句的sql,如

INSERT INTO opt(id,name) VALUES(1,”3434”)查看是否插入到指定分库的表里面,若成功,说明Mycat可以正常使用



如图所示:插入的数据分布到指定的库里面

注:mycat的插入语句必须有分片规则的字段,否则无法判定是插入哪个数据库。

6.Mycat更多细节

以上只是简单介绍了如何快速启动一个Mycat的demo,关于更详细的配置信息及更为复杂的分片规则和sql,可以参考Mycat的官方介绍文档

http://www.mycat.org.cn/document/Mycat_V1.6.0.pdf

2018-01-04更新

Tip:上面用Navicat连接的时候发现一个问题,新建连接的时候,填写用户名和密码的时候,用户名字上文中Server.xml中

<user name="user">

标签的name属性值即user,密码是

<property name="password">666666</property>

这个标签中的“666666”,其实一开始填写错误了,将用户名填写成错误,会导致报 1045 "can’t Access...."的错误!

Mycat快速入门的更多相关文章

  1. 开源分布式中间件 DBLE 快速入门指南

    GitHub:https://github.com/actiontech/dble 官方中文文档:https://actiontech.github.io/dble-docs-cn/ 一.环境准备 D ...

  2. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  3. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  4. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  5. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  6. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  7. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

  8. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  9. 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

随机推荐

  1. ES6学习笔记(七)对象的新增方法

    1.Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符(==)和严格相等运算符(===).它们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0等于-0.J ...

  2. ES6学习笔记(三)字符串的扩展

    ES6 加强了对 Unicode 的支持,并且扩展了字符串对象. 1.字符的Unicode表示法 JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码 ...

  3. OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天

    在研究OpenJDK,Java编译器javac源码的过程中,发现以下代码. 顿时发现枚举类竟然也有如此"高端大气上档次"的用法. 沙场点兵(用法源码) com.sun.tools. ...

  4. Intellij IDEA使用指南(持续更新)(转)

    一.项目层面 1.Java开发工具IntelliJ IDEA导入项目 http://jingyan.baidu.com/article/a17d52852118ac8098c8f2c1.html 2. ...

  5. hdparm

    https://www.douban.com/note/244813504/ http://blog.sina.com.cn/s/blog_413d250e0101jtr7.html http://m ...

  6. HOJ——T 2275 Number sequence

    http://acm.hit.edu.cn/hoj/problem/view?id=2275 Source : SCU Programming Contest 2006 Final   Time li ...

  7. 时间格式化函数strftime

     #include <time.h> #include <stdio.h> #include <string.h> int main() {   char ti ...

  8. jquery源码09 (6058 , 6620) css() : 样式的操作

    var curCSS, iframe, // swappable if display is none or starts with table except "table", & ...

  9. IBM磁盘阵列及文件系统的管理

    一.几个基本概念 物理卷(PV):一个物理卷指一块硬盘 卷组(VG):卷组是可用物理硬盘的集合,可以逻辑地看成一块大硬盘 物理分区(PP):卷组中物理卷划分成固定大小的块(缺省为4MB) 逻辑卷(LV ...

  10. 【Python学习】爬虫报错处理bs4.FeatureNotFound

    [BUG回顾] 在学习Python爬虫时,运Pycharm中的文件出现了这样的报错: bs4.FeatureNotFound: Couldn’t find a tree builder with th ...