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. Deepin for Linux 下串口调试交换机

    最近因工作需要,在淘宝购买了一条宇泰的串口线:USB to RS232 之所以选择这款,主要是它支持 Windows.Linux.mac Linux机是Deepin for Linux,算是国产比较好 ...

  2. Python 查找Twitter中特定话题中最流行的10个转发Tweet

    CODE: #!/usr/bin/python # -*- coding: utf-8 -*- ''' Created on 2014-7-4 @author: guaguastd @name: fi ...

  3. Top 16 Java 应用类 - 这些功能再也不用自己写了

    Java中有很多应用类.这些类定义静态方法能够解决非常多常见的问题.以下是通过5万个开源项目统计得到的最热门的16个应用类. 类按热门程序排列.类的方法也是按热门程序排序. 浏览这个类能够看看有哪些功 ...

  4. Android实现本地图片选择及预览缩放效果仿春雨医生

    在做项目时常常会遇到选择本地图片的需求.曾经都是懒得写直接调用系统方法来选择图片.可是这样并不能实现多选效果.近期又遇到了,所以还是写一个demo好了.以后也方便使用.还是首先来看看效果 显示的图片使 ...

  5. css中linear-gradient的使用

    注明:此篇文章来自http://www.cnblogs.com/lhb25/archive/2013/01/30/css3-text-shadow.html.

  6. pycharm做什么

    pycharm做什么 说实话.作为一个Coder.每天在各种IDE中切换编写Code.如果一个IDE Look and Feel总是无形中影响你每天Code Farm的心情.那该是多么不爽的事情.特别 ...

  7. JAVA使用YUI压缩CSS/JS

    前言 JS/CSS文件压缩我们经常会用到,可以在网上找在线压缩或者本地直接使用,我这里使用的是yahoo开源组件YUI Compressor.首先介绍一下YUI Compressor,它是一个用来压缩 ...

  8. Activemq开启JMX及问题排查

    0.服务端开启JMX服务 一.修改${ ActiveMQ_HOME} /conf/activemq.xml文件 在<broker>标签中添加如下属性:useJMX="true&q ...

  9. 【例题 8-11 UVA-10954】Add All

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 就是合并果子.. 每次都合并最小的就可以啦. 别忘了初始化 [代码] /* 1.Shoud it use long long ? 2 ...

  10. vim 窗口分割命令

    如何在一个窗口下面同时打开两个以及以上的文件,有横向跟纵向两种方式 一.如果在终端中开没有打开vim,可以: 横向分割显示: $ vim -o filename1 filename2 纵向分割显示: ...