转载自 https://blog.csdn.net/smilefyx/article/details/72810531

1.首先在Mycat官网下载安装包,这里就以最新的1.6版本为例,下载地址为: http://dl.mycat.io/1.6-RELEASE/

2.解压完成后,主要编辑的配置文件在conf目录下,分别为schema.xml、rule.xml、server.xml、sequence_db_conf.properties四个文件。

schema.xml主要配置物理数据库的信息,逻辑数据库名称以及表和路由策略之间的关系等;

rule.xml主要配置路由策略、拆分规则等;

server.xml主要配置逻辑数据库的信息,包括用户名、密码、端口等,也是代码中数据库连接的地址;

sequence_db_conf.properties主要配置主键自增说明。
3.server.xml  设置登陆 mycat 的用户名,密码,数据库

<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB</property> <!-- 表级 DML 权限设置 -->
<!--
<privileges check="false">
<schema name="TESTDB" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
</privileges>
-->
</user> <user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>

4.rule.xml

<tableRule name="mod-long">
<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">3</property>
</function>

定义路由策略mod-long,该策略对分表的id进行mod2除法,对模3算法的结果进行分库

5.schema.xml

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="company" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3"
rule="mod-long" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
<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:3306" user="root"
password="root">
</writeHost>
</dataHost>
</mycat:schema>

5.2、创建数据库
按照schema.xml配置中的示例,我们需要建立分别名为db1、db2、db3的数据库。链接mysql,建立相关的数据库:

create database db1 character set utf8;
create database db2 character set utf8;
create database db3 character set utf8;
5.3、链接数据库
使用数据库链接工具或命令。本文使用navicat链接数据库。使用navicat链接数据库时的主要参数配置如下:

端口号:8066

用户名和密码可以查看mycat conf目录中的server.xml中的定义,本文使用的是默认的root,123456来连接,连接成功后只能操作名为TESTDB的数据库;

5.4、全局表的测试
使用navicat打开命令列界面。输入如下命令创建数据表:

USE TESTDB;
create table company(id int not null primary key,name varchar(100));
之后使用如下命令查看创建表命令的执行状态:
explain USE TESTDB;
create table company(id int not null primary key,name varchar(100));
因为company在schema.xml中北定义为了全局表,所以正常情况下可以看到如下类似结果:

dn1 create table company(id int not null primary key,name varchar(100))
dn2 create table company(id int not null primary key,name varchar(100))
dn3 create table company(id int not null primary key,name varchar(100))

3 rows in set
紧接着我们尝试执行如下命令执行一条插入数据的操作:

insert into company(id,name) values(1,'leader usgh');
insert into company(id,name) values(2,'leader us5');
insert into company(id,name) values(3,'leader usq');
insert into company(id,name) values(4,'leader us2');
insert into company(id,name) values(5,'leader us2');
insert into company(id,name) values(6,'leader us56');
insert into company(id,name) values(7,'leader us3');
insert into company(id,name) values(8,'leader us1');

之后我们直接登录到mysql服务器分别查看db1、db2、db3三个数据库,可以看到数据库中都创建了名为company的数据表,同时表中都按id平均插入了数据。

mycat使用之MySQL单库分表及均分数据的更多相关文章

  1. mycat 单库分表

    上次把mycat的读写分离搞定了,这次试下单库分表,顾名思义就是在一个库里把一个表拆分为多个 需要配置的配置文件为 schema.xml 配置内容如下 <!DOCTYPE mycat:schem ...

  2. SpringBoot+Mybatis-Plus整合Sharding-JDBC5.1.1实现单库分表【全网最新】

    一.前言 小编最近一直在研究关于分库分表的东西,前几天docker安装了mycat实现了分库分表,但是都在说mycat的bug很多.很多人还是倾向于shardingsphere,其实他是一个全家桶,有 ...

  3. Sharding-JDBC:单库分表的实现

    剧情回顾 前面,我们一共学习了读写分离,垂直拆分,垂直拆分+读写分离.对应的文章分别如下: Sharding-JDBC:查询量大如何优化? Sharding-JDBC:垂直拆分怎么做? 通过上面的优化 ...

  4. Sharding-JDBC实现水平拆分-单库分表

    参考资料:猿天地   https://mp.weixin.qq.com/s/901rNhc4WhLCQ023zujRVQ 作者:尹吉欢 当单表的数量急剧上升,超过了1千万以上,这个时候就要对表进行水平 ...

  5. mycat 单库分表实践

    参考 https://blog.csdn.net/sq2006hjp/article/details/78732227 Mycat采用的水平拆分,不管是分库还是分表,都是水平拆分的.分库是指,把一个大 ...

  6. Spring Boot中整合Sharding-JDBC单库分表示例

    本文是Sharding-JDBC采用Spring Boot Starter方式配置第二篇,第一篇是读写分离讲解,请参考:<Spring Boot中整合Sharding-JDBC读写分离示例> ...

  7. springboot with appache sharding 3.1 单库分表

    配置文件相关信息: #开发 server.port=7200 spring.application.name=BtspIsmpServiceOrderDev eureka.client.service ...

  8. MySQL 高可用:mysql+mycat实现数据库分片(分库分表)

    本文引用于http://blog.csdn.net/kk185800961/article/details/51147029 MySQL 高可用:mysql+mycat实现数据库分片(分库分表) 什么 ...

  9. php面试专题---mysql数据库分库分表

    php面试专题---mysql数据库分库分表 一.总结 一句话总结: 通过数据切分技术将一个大的MySQLServer切分成多个小的MySQLServer,既攻克了写入性能瓶颈问题,同一时候也再一次提 ...

随机推荐

  1. 海伦去约会——kNN算法

    下午于屋中闲居,于是翻开<机器学习实战>一书看了看“k-邻近算法”的内容,并学习了一位很厉害的博主Jack Cui的代码,自己照着码了一遍.在此感谢博主Jack Cui的知识分享. 一.k ...

  2. Mock Server

    下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/ 此处使用standalone的方式,不使用api用法 启动方 ...

  3. ssh 公钥无秘登录问题

    1. 验证服务启动,网络端口连接正常 可以使用nc,telnet,或者密码模式的ssh来验证 2. 验证ssh client端的配置正确 可以尝试登录另外一台主机, 或者本机自校验 3. 验证ssh ...

  4. Appium java环境搭建(Windows版)

    注意:如果初次学习appium的话,则需要你做好准备因为安装过程并不简单 1.安装appium Appium 官方网站:http://appium.io/ 安装Appium之前需要先安装node.js ...

  5. 记录添加mvn命令,以及安装jar包到本地仓库

    安装版的maven,没有mvn命令,需要先设置环境变量,添加%MAVEN_HOME% =D:\apache-maven-3.3.9path 中添加 %MAVEN_HOME%/bin即可 安装下载好的j ...

  6. 团队项目需求分析——NABCD

    N(Need)需求 经发现,很多人在理发时都要经过漫长的排队等待时间,这些时间也就因此白白浪费掉了,而且一些理发店也会因个别顾客不愿等待而损失客源.对此,我们设计出了这款小软件——理了么,一款专门为理 ...

  7. one-hot编码理解

    one-hot是比较常用的文本特征特征提取的方法. one-hot编码,又称“独热编码”.其实就是用N位状态寄存器编码N个状态,每个状态都有独立的寄存器位,且这些寄存器位中只有一位有效,说白了就是只能 ...

  8. LeetCode 147. Insertion Sort List 链表插入排序 C++/Java

    Sort a linked list using insertion sort. A graphical example of insertion sort. The partial sorted l ...

  9. dubbo rest服务 No provider available for the service 错误问题

    1.版本 dubbo 2.6.2 2.描述 消费者调用dubbo rest服务报No provider available for the service错误 网络上有讲是实体类未实现Serializ ...

  10. ServletContextListener中的方法contextInitialized执行了两次

    有一个web06项目是直接拷贝web05的,复制过后web06项目默认的web配置中的Context Root还是web05,导致tomcat在启动时还是会创建两个web应用,修改成web06后,cl ...