轉載自 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平均插入了數據。