1.安装jdk1.7
2.连接实际mysql数据库
用命令行工具或图形化客户端,连接mysql,创建DEMO所用三个分片数据库;(默认schema.xml中的配置需要三个库)
CREATE database db1;
CREATE database db2;
CREATE database db3;
4.解压Mycat-server-1.X.X.X-20150105144205-Linux.tar.gz 到/usr/local/mycat
4.修改 mycat配置文件
server.xml:这里配置客户端连接mycat 使用的用户名和密码,以及配置用户对应的数据库(逻辑库,虚拟)
下面是默认配置(可不用修改):
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
</user>

schema.xml:由于采用一个mysql,所以配一个写和一个读(同一个)
<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="localhost:3307" user="root"
password="123456">
<!-- can have multi read hosts -->
<readHost host="hostS2" url="localhost:3307" user="root" password="123456" />
</writeHost>
<!--<writeHost host="hostS1" url="localhost:3316" user="root"
password="123456" />-->
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>

5.进入 /usr/local/mycat/bin (默认数据端口为8066,管理端口为9066)
执行./mycat start

显示: Starting Mycat-server...

6. 进入logs目录,查看日志,如果wrapper.log 报错 java.NET.BindException: Address already in use 杀掉正在执行的相关java进程
ps -ef|grep java
kill -9 xxx

7.使用客户端连接mycat
端口8066,用户名root,密码123456
成功后可以看到 schema.xml中配置的逻辑表 如 employee等(假象)
查询表时会报错

7.确认:db1、db2、db3中没有表 employee

8.使用客户端连接mycat,通过mycat创建表
create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

然后查看 db1 和 db2 发现都已经创建了表 employee,几乎同时创建。由于employee表没有配置到db3中,所以db3中没有employee表
9.插入数据
insert into employee(id,name,sharding_id) values(1,'leader us',10000);

然后分去db1 和 db2数据库中查询 ,发现db1中的empoyee表有数据插入,但是db2中没有。分片原因
10.直接连接 db2
插入数据
insert into employee(id,name,sharding_id) values(2,'zhanghui',10010);

db2数据库中新增一条数据:分片原因
11.通过mycat查询
select * from employee
返回两条数据

12.分片测试:
根据规则sharding-by-intfile(分片枚举)进行分片测试

employee逻辑表定义
<table name="employee" primaryKey="ID" dataNode="dn1,dn2"
rule="sharding-by-intfile" />

可以在rule.xml中找到 sharding-by-intfile 的定义
<tableRule name="sharding-by-intfile">
<rule>
<columns>sharding_id</columns>
<algorithm>hash-int</algorithm>
</rule>
</tableRule>

hash-int算法:
<function name="hash-int"
class="io.mycat.route.function.PartitionByFileMap">
<property name="mapFile">partition-hash-int.txt</property>
</function>

partition-hash-int.txt根据这个文件进行分片

在mycat安装目录 conf目录下能够找到这个 txt文件,里面的内容如下:
10000=0
10010=1

相当于 值为10000的数据 写入0 分片;10010写入1分片。 0 和1 代表分片序号。

步骤9 和10 的操作验证了这个分片规则,这里不重复

13.全局表测试:
<table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" />
注意 company表是 全局表,会冗余存在个分区。

在mycat 客户端执行:

create table company(id int not null primary key,name varchar(100));

执行完后 db1 db2 db3 中都创建了company表

插入数据:
insert into company(id,name) values(1,'hp');

执行完成后,db1 db2 db2中都 写入了这条数据

Mycat安装及测试分片总结的更多相关文章

  1. MyCat安装与测试教程 超详细!

    MyCat安装与测试教程 超详细! MyCat基础知识 一.什么是MYCAT? 1. 一个彻底开源的,面向企业应用开发的大数据库集群 2. 支持事务.ACID.可以替代MySQL的加强版数据库 3. ...

  2. mycat安装和测试

    mycat安装和测试 一.  环境准备 本机环境是三台centos6.5 IP 主机名 数据库名 安装软件 192.168.17.4 master db1 mycat,mysql 192.168.17 ...

  3. Mycat的简易安装及测试

    1.环境 OS版本 CentOS release 6.5 (Final) 64bit DB版本 Mysql 5.6.37 Mycat 1.6 jdk1.7及以上版本 2.实战部署 1.创建用户及用户组 ...

  4. Mycat安装与使用

      1.下载:   https://github.com/MyCATApache/Mycat-download 具体下载哪个版本以发布为准,推荐1.4,1.5.   2.安装:   安全前,在Linu ...

  5. Mycat安装教程

      1.下载:   https://github.com/MyCATApache/Mycat-download 具体下载哪个版本以发布为准,推荐1.4,1.5.   2.安装:   安全前,在Linu ...

  6. linux中mycat的配置,分片,以及主从复制

    1.1    安装环境 1.jdk:要求jdk必须是1.7及以上版本 2.Mysql:推荐mysql是5.5以上版本 1.2  安装步骤 Mycat有windows.linux多种版本.本教程为lin ...

  7. 数据库中间件之mycat安装部署(一)

    在学习数据库中间件前,我们先抛出三个问题 1.数据库数据量不大,但并发读写操作很大,应该怎么办? 此时我们首先考虑使用缓存中间件来减轻读压力,如果不能满足则考虑数据库读写分离,此时就会引入新的问题,这 ...

  8. mycat安装与配置

    1.安装jdk 测试jdk是否已经安装 [root@node002 ~]# java -version-bash: java: command not found 创建解压目录 [root@node0 ...

  9. mycat 安装 分表 分库 读写分离

    简单的 理解 一下 mycat :如图 mycat 是一个 连接数据库的中介.一个独立安装的 工具,他连接着真实的数据库,并且 把自己伪装成一个数据库. 程序连接 mycat ,mycat 连接 到真 ...

随机推荐

  1. struts过滤器的不同2.16以后应该是: org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 2.12以前应该是org.apache.struts2.dispatcher.Filterdispatcher

    版本不同过滤器不同.2.16以后应该是:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter2.12以前应该是or ...

  2. js操作时间 加法 减法 计算 格式化时间

    Date.prototype.Format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d ...

  3. (转)ASP.NET MVC:Razor 引入命名空间

    页面中引用 c# @using MvcApplication83.Models @using MvcApplication83.Common 行尾不需要加分号,加上也无妨(不过得全加上). VB.Ne ...

  4. centos7(vmware install) 安装EMQ注意事项 ---控制台远程访问

    若想远端访问控制台,需打开对于端口 TCP 服务端口占用 EMQ 2.0 消息服务器默认占用的 TCP 端口包括: 1883 MQTT 协议端口 8883 MQTT/SSL 端口 8083 MQTT/ ...

  5. python --闭包学习

    闭包概念: Closure:内部函数中对enclosing作用域的变量进行引用 enclosing作用域:函数内部与内嵌函之间 范例1: #coding:utf-8 def set_passline( ...

  6. nodejs 中使用shell脚本

    虽然nodejs的require('child_process').execSync可以使用shell,但其实问题特别多.尤其是符号和语法冲突,可读性也很差,只能完成一些小规模的shell使用. co ...

  7. 多线程-BlockingQueue,Array[Linked]BlockingQueue,DelayQueue,PriorityBlockingQueue,SynchronousQueue

    阻塞场景 BlockingQueue阻塞队列,阻塞的情况主要有如下2种: 1. 当队列满了,进行入队操作阻塞 2. 当队列空了,进行出队操作阻塞 阻塞队列主要用在生产者/消费者模式中,下图展示了一个线 ...

  8. 多线程-Thread与Runnable源码分析

    Runnable: @FunctionalInterface public interface Runnable { /** * When an object implementing interfa ...

  9. springboot admin server常用配置

    Property name Description Default value spring.boot.admin.context-path The context-path prefixes the ...

  10. 使用thrift进行跨语言调用(php c# java)

    使用thrift进行跨语言调用(php c# java)   1:前言 实际上本文说的是跨进程的异构语言调用,举个简单的例子就是利用PHP写的代码去调C#或是java写的服务端.其实除了本文提供的办法 ...