Mycat安装及测试分片总结
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安装及测试分片总结的更多相关文章
- MyCat安装与测试教程 超详细!
MyCat安装与测试教程 超详细! MyCat基础知识 一.什么是MYCAT? 1. 一个彻底开源的,面向企业应用开发的大数据库集群 2. 支持事务.ACID.可以替代MySQL的加强版数据库 3. ...
- mycat安装和测试
mycat安装和测试 一. 环境准备 本机环境是三台centos6.5 IP 主机名 数据库名 安装软件 192.168.17.4 master db1 mycat,mysql 192.168.17 ...
- Mycat的简易安装及测试
1.环境 OS版本 CentOS release 6.5 (Final) 64bit DB版本 Mysql 5.6.37 Mycat 1.6 jdk1.7及以上版本 2.实战部署 1.创建用户及用户组 ...
- Mycat安装与使用
1.下载: https://github.com/MyCATApache/Mycat-download 具体下载哪个版本以发布为准,推荐1.4,1.5. 2.安装: 安全前,在Linu ...
- Mycat安装教程
1.下载: https://github.com/MyCATApache/Mycat-download 具体下载哪个版本以发布为准,推荐1.4,1.5. 2.安装: 安全前,在Linu ...
- linux中mycat的配置,分片,以及主从复制
1.1 安装环境 1.jdk:要求jdk必须是1.7及以上版本 2.Mysql:推荐mysql是5.5以上版本 1.2 安装步骤 Mycat有windows.linux多种版本.本教程为lin ...
- 数据库中间件之mycat安装部署(一)
在学习数据库中间件前,我们先抛出三个问题 1.数据库数据量不大,但并发读写操作很大,应该怎么办? 此时我们首先考虑使用缓存中间件来减轻读压力,如果不能满足则考虑数据库读写分离,此时就会引入新的问题,这 ...
- mycat安装与配置
1.安装jdk 测试jdk是否已经安装 [root@node002 ~]# java -version-bash: java: command not found 创建解压目录 [root@node0 ...
- mycat 安装 分表 分库 读写分离
简单的 理解 一下 mycat :如图 mycat 是一个 连接数据库的中介.一个独立安装的 工具,他连接着真实的数据库,并且 把自己伪装成一个数据库. 程序连接 mycat ,mycat 连接 到真 ...
随机推荐
- (七)Oracle学习笔记—— 游标
1.游标简介 游标用来处理从数据库中检索的多行记录(使用SELECT语句).利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集. 为了处理SQL语句,Oracle将在内存中分配一个区域,这就是 ...
- Linux-使用 screen 管理你的远程会话
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-screen/ 你是不是经常需要 SSH 或者 telent 远程登录到 Linux 服务器?你是 ...
- 【web框架】Django
一.什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单的说,就是你用别人搭建好的舞台来做表演. 对于所有 ...
- JBoss目录结构说明
http://www.blogjava.net/livery/articles/262544.html $JBOSS-HOME/bin: 放置各种脚本文件以及相关文件,包括jb ...
- 解决 adb devices :???????????? no permissions 方法
- bootstrap 网格系统学习
Bootstrap 官方文档中有关网格系统的描述: Bootstrap 包含了一个响应式的.移动设备优先的.不固定的网格系统,可以随着设备或视口大小的增加而适当地扩展到 12 列.它包含了用于简单的布 ...
- mysql联合查询union
mysql联合查询,对多表进行组合查询 使用 UNION ALL 命令实例 显示所有 使用UNION 过滤重复的 使方法 select * from (SELECT id,name as usenam ...
- js一点代码备用
加载次序 .1等页面加载完毕 <script type="text/javascript"> jQuery(window).load(function(){ ... } ...
- container_of学习笔记
最近在学习c语言宏编程,看到了container_of宏,深入学习了一天,做个笔记留念. 1.看一下书上写的container_of的版本: #define offsetof(TYPE,MEMBER) ...
- iOS开发值NSUserDefaults类概述
NSUserDefaults类概述 NSUserDefaults类为和默认的系统进行交互提供了一个系统编程接口.默认的系统允许一个应用来定制它的行为以适应用户的喜好.例如,你可以允许用户去决定你的应用 ...