转载自 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平均插入了数据。
转载于:https://www.cnblogs.com/miracleYu/p/10413754.html
相关资源:JAVA上百实例源码以及开源项目