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. Linux 压缩文件的命令行总结

    Linux压缩文件的读取 ·    *.Z       compress 程序压缩的档案: ·    *.bz2     bzip2 程序压缩的档案: ·    *.gz      gzip 程序压缩 ...

  2. Memcached 测试

    Memcached set 命令用于将 value(数据值) 存储在指定的 key(键) 中. 如果set的key已经存在,该命令可以更新该key所对应的原来的数据,也就是实现更新的作用. 语法: s ...

  3. EMQ学习笔记---Clean Session和Retained Message

    MQTT会话(Clean Session)MQTT客户端向服务器发起CONNECT请求时,可以通过’Clean Session’标志设置会话.‘Clean Session’设置为0,表示创建一个持久会 ...

  4. requests.exceptions.MissingSchema: Invalid URL 'xxxxxxxxxxxxx': No schema supplied. Perhaps you meant xxxxxxxxxxxxx

    import requests session = requests.session() carProposalUrl = "www.caaaa.com.cn/aaaa/aaaaa/carP ...

  5. Unity3D碰撞器事件测试(Rigidbody/Kinematic/Trigger/Collider)

    1.Kinematic和刚体之间的碰撞事件 Unity官方有一个详细的碰撞关系表:http://docs.unity3d.com/Manual/CollidersOverview.html 但其实可以 ...

  6. c#动态类型

    class Program { static void Main(string[] args) { dynamic test = new ExpandoObject(); test.Name = &q ...

  7. [css]margin-top重叠

  8. C++游戏系列5:不止有一件武器

    很多其它见:C++游戏系列文件夹 知识点:对象数组作为数据成员 改进:每一个角色所持有的武器不仅仅一件,故持有的武器,用了对象数组来表示,当然,也能够是空手. 由此而带来的,还得记录一共同拥有几件武器 ...

  9. Yii2中对数据库的查询方法如下

    User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...

  10. 第四篇: python函数续

    1.函数的嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其它函数 示例1: def bar(): print('from nbar') def foo(): print('from foo') ...