---》需求按
某种类型把表 分库
---》机器:
* mysql1
操作系统版本 : centos6.5 x64
数据库版本 : mysql5.1.73
数据库名实例 : db1
hostname:hadoop1
* mysql2
操作系统版本 : centos6.5 x64
数据库版本 : mysql5.1.73
数据库名实例 : db2
hostname:hadoop2
* mycat
操作系统版本 : win7
mycat版本 :1.5 release
---》配置
* server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
</system>
<!-- 逻辑用户名 、密码 、实例-->
<user name="test">
<property name="password">test</property>
<property name="schemas">test</property>
</user>
</mycat:server>
* schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/" >
<schema name="test" checkSQLschema="false" sqlMaxLimit="100">
<table name="employee" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile" />
</schema>
<!-- db1 db2 为实际存在的实例-->
<dataNode name="dn1" dataHost="hadoop1" database="db1" />
<dataNode name="dn2" dataHost="hadoop2" database="db2" />
<dataHost name="hadoop1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="hadoop1:3306" user="root"
password="root">
</writeHost>
</dataHost>
<dataHost name="hadoop2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM2" url="hadoop2:3306" user="root"
password="root">
</writeHost>
</dataHost>
</mycat:schema>
* rule.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
<tableRule name="sharding-by-intfile">
<rule>
<columns>sharding_id</columns>
<algorithm>hash-int</algorithm>
</rule>
</tableRule>
<function name="hash-int"
class="org.opencloudb.route.function.PartitionByFileMap">
<property name="mapFile">partition-hash-int.txt</property>
</function>
</mycat:rule>
* partition-hash-int.txt
10000=0
10010=1
---》客户端测试
* 客户端连接 比如sqlyog、navicat 连接mycat
和mysql连接相似,但是端口号需要改成8066(mycat默认端口)
ip :127.0.0.1
端口:8066
库:test
用户\密码:test\test (server中配置的)
* 建立表
CREATE TABLE employee (id INT NOT NULL PRIMARY KEY,NAME VARCHAR(100),sharding_id INT NOT NULL);
* 插入数据
INSERT INTO employee(id,NAME,sharding_id) VALUES(1,'leader us',10000)
INSERT INTO employee(id,NAME,sharding_id) VALUES(2, 'me',10010);
INSERT INTO employee(id,NAME,sharding_id) VALUES(3, 'mycat',10000);
INSERT INTO employee(id,NAME,sharding_id) VALUES(4, 'mydog',10010);
* 查询测试
explain select * from employee ;
explain select * from employee where sharding_id=10000 ;
---》Jdbc测试
* 程序
@Test
public void testUpdatePoint3() throws SQLException {
String url = "jdbc:mysql://127.0.0.1:8066/test?user=test&password=test";
Connection con = DriverManager.getConnection(url);
String sql = "select id,NAME,sharding_id from employee";
PreparedStatement pstmt = con.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
int col = rs.getMetaData().getColumnCount();
System.out.println("============================");
while (rs.next()) {
for (int i = 1; i <= col; i++) {
System.out.print(rs.getString(i) + "\t");
if ((i == 2) && (rs.getString(i).length() <
) {
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("============================");
pstmt.close();
con.close();
}
* 结果http://ynp.iteye.com
============================
3 mycat 10000
1 leader us 10000
4 mydog 10010
2 me 10010
============================
---》与Spring 多数据源比较
mycat可以不用再维护多个数据源,且代码修改量小;
分享到:
相关推荐
Mycat 几种分片规则的使用说明以及例子 第5课 Mycat跨分片问题 Mycat跨分片聚合处理、Mycat跨分片JOIN、Mycat分布式事务 第6课 Mycat性能测试与调优 Mycat性能参数及调优 Mycat性能测试 第7课 Mycat高可用...
【正文】 Mycat,全称是MySQL Cluster,是一款开源的分布式数据库系统,设计目标是为大型互联网应用提供强一致性的分布式数据库...希望这个从入门到精通的教程能帮助你掌握Mycat的核心技术,应对复杂的数据库挑战。
同时,也要关注数据源(dataNode)的配置,它定义了MyCat连接的实际数据库实例。 schema.xml是数据分片的配置文件,你需要在这里定义数据库分片规则,比如按照特定字段进行哈希分片或范围分片。每个schema代表一个...
【标题】"mycat入门学习资料" 【描述】"mycat" 【标签】"mycat" 在当前的互联网大数据时代,分布式数据库系统成为了处理海量数据的关键技术之一。Mycat作为一个开源的分布式数据库中间件,它起着数据库路由、分片...
命令行工具指南 第4课 Mycat分片规则详解 Mycat 几种分片规则的使用说明以及例子 第5课 Mycat跨分片问题 Mycat跨分片聚合处理、Mycat跨分片JOIN、Mycat分布式事务 第6课 Mycat性能测试 与调优 Mycat性能参数及调优 ...
安装MySQL是使用Mycat的前提,因为Mycat依赖于一个或多个MySQL实例来存储和管理数据。 总结,"mycat从入门到熟练"的学习旅程将涵盖从安装Mycat到配置分片和读写分离,再到在MySQL集群中部署和优化的全过程。通过对...
### Mycat原理与入门 #### 一、Mycat简介 Mycat是一款开源的数据库中间件,它能够实现对数据库进行透明化的集群管理。通过Mycat,开发者可以将多个MySQL实例组合起来,形成一个统一的数据访问层,从而解决单个...
《Mycat从入门到精通之原理与入门、基本功能、配置》教程是针对数据库分片中间件Mycat的一款详尽学习资料。Mycat作为一款开源的分布式数据库系统,广泛应用于大型互联网企业的高并发场景,能有效解决单机数据库无法...
### Mycat从入门到精通之Mycat架构与Catlet分析 #### 一、Mycat 1.5系列架构概述 Mycat作为一个开源的分布式数据库中间件,旨在为用户提供简单易用的数据库访问层,能够有效地解决单个数据库性能瓶颈的问题。Mycat...
### Mycat从入门到精通之Mycat源码分析 #### 一、NIO源码分析 Mycat作为一个高性能的数据库中间件,在其架构设计上充分利用了Java NIO技术来提升性能。NIO(Non-blocking I/O)是非阻塞I/O的简称,通过采用非阻塞...
本篇将深入探讨分布式数据库架构以及Mycat在其中的应用,同时结合官网入门指南,帮助读者掌握其基本概念和实践技巧。 一、分布式数据库架构概述 分布式数据库是指数据分布在多个物理节点上,通过网络进行通信和...
### Mycat从入门到精通之项目实施 #### 一、Mycat简介 Mycat作为一款开源的数据库连接池,它不仅仅是一个简单的连接池,更是一个轻量级的数据库中间件,支持读写分离、分库分表等功能。本教程旨在通过一系列实践...
Mycat不是传统意义上的数据库系统,而是一个连接客户端与后端多个数据库实例的中间层,它在应用与数据库之间架起桥梁,利用分片技术将大表拆分成小表,并通过分片规则,实现了数据的分布式存储与管理。 文档的...
描述中提到的“史上最全的文档”,暗示了该技术文档对Mycat V1.6.0的介绍非常详尽,包含入门指南、深入概念解析、分片规则、配置与优化、性能测试、常见问题解决以及高阶读写分离策略等多个部分,目的是为了让使用者...
【Mycat操作之分库分表入门】 Mycat是一款开源的分布式数据库中间件,主要功能是实现数据库的水平扩展,通过分库分表来处理大数据量的问题,减轻单机数据库的压力。它支持MySQL协议,可以透明地将一个数据库集群...
- 多租户:Mycat支持多租户模式,允许多个租户共享同一个Mycat实例,通过不同的逻辑库来区分。 **3. Mycat分片策略** Mycat提供分片功能,主要有垂直分片和水平分片。垂直分片是指把不同的表切分到不同的数据库中...
【Mycat入门】 Mycat是一款开源的数据库中间件,专为解决企业级应用开发中的大数据存储和处理问题而设计。它不仅是一个数据库集群,还具备事务处理能力,支持ACID特性,能够替代MySQL作为加强版的数据库。Mycat被视...
提供了对Mycat操作的实例演示,帮助用户更好地理解和运用Mycat。 ### 第5章 日志分析 #### 5.1 warpper日志 分析了warpper日志的结构和含义,帮助用户从日志中获取系统运行状况。 #### 5.2 mycat日志 解释了mycat...
《MyCat In Action》中文版是一本专门为初学者准备的Mycat入门指南,它详尽介绍了Mycat这一开源数据库中间件系统。Mycat 1.3版本旨在帮助企业以低成本的方式解决数据存储和业务扩展时遇到的数据瓶颈问题,同时提供了...
Mycat入门包括快速镜像方式体验、服务安装与配置、服务启动与启动设置、使用demo等。 4. **日志分析** Mycat支持不同级别的日志记录,包括mycat日志、debug模式下的SQL执行分析和异常日志。 5. **配置介绍** - ...