Mycat入門(Windows環境)
阿新 • • 發佈:2018-12-07
Mycat(Windows環境)(1) 初入門
Mycat 是SQL叢集中介軟體,基於阿里開源的Cobar產品而研發,Cobar的穩定性、可靠性、優秀的架構和效能
1. MyCat準備
- 安裝 mysql
安裝jdk 1.8
這是 jdk 下載地址.
安裝完成,配好環境變數
下載maycat
這是 mycat 下載地址.
mycat 下載目錄
2. 資料庫準備
create database db1;
CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
username varchar(32) NOT NULL default '',
passwork varchar(32) NOT NULL default '',
time DATETIME NOT NULL default '1971-01-01 01:00:00',
PRIMARY KEY (id)
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;
create database db2;
CREATE TABLE orders (
id INT NOT NULL AUTO_INCREMENT,
oid varchar(32) NOT NULL default '',
money decimal(19,4) NOT NULL default 0,
state TINYINT NOT NULL default 0,
time DATETIME NOT NULL default '1971-01-01 01:00:00',
PRIMARY KEY (id)
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;
create database db3;
CREATE TABLE orders (
id INT NOT NULL AUTO_INCREMENT,
oid varchar(32) NOT NULL default '',
money decimal(19,4) NOT NULL default 0,
state TINYINT NOT NULL default 0,
time DATETIME NOT NULL default '1971-01-01 01:00:00',
PRIMARY KEY (id)
)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;
3. MyCat配置
MyCat配置 官方文件.
mycat 的配置檔案在conf下:
- 為實現下圖:
配置如下:
- server.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<property name="defaultSqlParser">druidparser</property>
<property name="mutiNodeLimitType">1</property>
<property name="serverPort">8066</property>
<property name="managerPort">9066</property>
</system>
<!-- mycat 的使用者名稱,密碼,資料庫 -->
<user name="test">
<property name="password">123456</property>
<property name="schemas">JGDB</property>
</user>
<user name="user">
<property name="password">123456</property>
<property name="schemas">JGDB</property>
<property name="readOnly">true</property>
</user>
</mycat:server>
- rule.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
<tableRule name="order_rule">
<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">2</property>
</function>
</mycat:rule>
- schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!-- 設定表的儲存方式.schema name="JGDB" 與 server.xml中的 JGDB 設定一致 -->
<schema name="JGDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="users" primaryKey="id" dataNode="db1" />
<table name="orders" primaryKey="id" dataNode="db2,db3" rule="order_rule" />
</schema>
<!-- 設定dataNode 對應的資料庫,及 mycat 連線的地址dataHost -->
<dataNode name="db1" dataHost="host1" database="db1" />
<dataNode name="db2" dataHost="host1" database="db2" />
<dataNode name="db3" dataHost="host1" database="db3" />
<!-- mycat 邏輯主機dataHost對應的物理主機.其中也設定對應的mysql登陸資訊 -->
<dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">
<heartbeat></heartbeat>
<writeHost host="server1" url="127.0.0.1:3306" user="root" password="xinfu978"/>
</dataHost>
</mycat:schema>
4. 測試
- 使用 navicat連線 mycat
插入users表資料測試
- 往users 插入兩個使用者
- 檢視物理庫 db1 的users表是否有資料
測試成功
- 插入order表資料測試(是否id單數在db3,雙數在db2)
往orders 插入4條資料
- 檢視物理庫 db2,db3 的 orders 表是否有對的資料
–db2 資料符合
–db3 資料符合