1. 程式人生 > >Mycat入門(Windows環境)

Mycat入門(Windows環境)

Mycat(Windows環境)(1) 初入門

Mycat 是SQL叢集中介軟體,基於阿里開源的Cobar產品而研發,Cobar的穩定性、可靠性、優秀的架構和效能

1. MyCat準備

  • 安裝 mysql

這裡寫圖片描述

  • 安裝jdk 1.8

    1. 這是 jdk 下載地址.

    2. 安裝完成,配好環境變數

這裡寫圖片描述

  • 下載maycat

    1. 這是 mycat 下載地址.

    2. 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配置

  1. MyCat配置 官方文件.

    mycat 的配置檔案在conf下:

這裡寫圖片描述

  1. 為實現下圖:

這裡寫圖片描述

配置如下:

  • 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. 測試

  1. 使用 navicat連線 mycat

這裡寫圖片描述

這裡寫圖片描述

  1. 插入users表資料測試

    • 往users 插入兩個使用者

users

  • 檢視物理庫 db1 的users表是否有資料

db1

  • 測試成功

    1. 插入order表資料測試(是否id單數在db3,雙數在db2)
  • 往orders 插入4條資料

mycat

  • 檢視物理庫 db2,db3 的 orders 表是否有對的資料

mycat

–db2 資料符合

mycat

–db3 資料符合

5. 測試成功