配置MySql主從數(shù)據(jù)庫,MyCat分庫分表政供,讀寫分離中間件(純干貨播聪,無美圖)

先點(diǎn)贊,后觀看布隔,伸手要有好習(xí)慣

  • 基于Java環(huán)境開發(fā)
  • 主要配置文件 schema.xml(邏輯數(shù)據(jù)庫)离陶、rule.xml(分片規(guī)則)、server.xml(一些系統(tǒng)和用戶)

理解:Mycat作為一個(gè)邏輯數(shù)據(jù)庫执泰,是需要依賴下面的真實(shí)數(shù)據(jù)庫

配置主從

  • 坑點(diǎn)及建議:
    1枕磁、因?yàn)殛P(guān)注點(diǎn)在主從,別花太多時(shí)間在一臺單機(jī)安裝mysql兩個(gè)端口术吝,可嘗試虛擬機(jī)兩臺
    2计济、mysql5.7跟之前的版本不一樣,windows上面測試的朋友my.ini可以自己新建
    3排苍、對于my.ini的各個(gè)參數(shù)的解釋請隨機(jī)去百度沦寂,這里有我的轉(zhuǎn)載

  • 實(shí)操
    假設(shè)現(xiàn)在兩臺數(shù)據(jù)庫的mysql均已正常安裝,配置如下

服務(wù)器 IP 賬號 密碼
A AUSER APWD
B BUSER BPWD

一般進(jìn)my.ini只需要更新以下所給信息(<font color="red">有則改之無則加</font>):

主庫配置及步驟

[mysqld]
#binlog格式,分三種:statement level,rowlevel,mixed
#三種模式的差別介紹可以看:https://juejin.im/post/5df32b2a6fb9a01628012fb3
binlog_format=mixed
#為服務(wù)器標(biāo)識淘衙,主從一定不要一樣  
server-id   = 1
#清理二進(jìn)制日志的時(shí)間間隔
expire_logs_days = 10
#是需要同步的數(shù)據(jù)庫  
binlog-do-db
#不需要同步的數(shù)據(jù)庫
binlog-ignore-db = mysql                
binlog-ignore-db = test  

#設(shè)置gtid同步方式
gtid_executed_compression_period = 1000 #1000默認(rèn)
gtid_mode = on #默認(rèn)off
enforce_gtid_consistency = on #默認(rèn)off

1传藏、連接主庫,并進(jìn)入mysql

>mysql -u數(shù)據(jù)庫用戶名 -p數(shù)據(jù)庫密碼

2、為從庫創(chuàng)建授權(quán)用戶slave,密碼slave ,B為對應(yīng)的IP

grant replication slave on *.* to 'slave'@'B' identified by 'slave' ;

3彤守、刷新權(quán)限信息

flush privileges;

4毯侦、自行創(chuàng)建數(shù)據(jù)庫和數(shù)據(jù)表并插入相應(yīng)數(shù)據(jù),mysql默認(rèn)InnoDB具垫,主庫可以不用修改引擎

從庫配置及步驟

my.ini文件

[mysqld]
#binlog格式,分三種:statement level,rowlevel,mixed
#三種模式的差別介紹可以看:
binlog_format=mixed
#為服務(wù)器標(biāo)識侈离,主從一定不要一樣  
server-id   = 13
#清理二進(jìn)制日志的時(shí)間間隔
expire_logs_days = 10
#是需要同步的數(shù)據(jù)庫  
binlog-do-db
#設(shè)置gtid同步方式
gtid_executed_compression_period = 1000 #1000默認(rèn)
gtid_mode = on #默認(rèn)off
enforce_gtid_consistency = on #默認(rèn)off

1、連接從庫,并進(jìn)入mysql

>mysql -u數(shù)據(jù)庫用戶名 -p數(shù)據(jù)庫密碼

2筝蚕、復(fù)制一份主庫的數(shù)據(jù)庫到從庫卦碾,并賦予slave權(quán)限

grant all privileges on *.* to 'slave'@'%' identified by 'slave' with grant option;

3铺坞、刷新權(quán)限或者退出mysql命令行重啟mysql服務(wù)

4、master建立數(shù)據(jù)同步

change master to master_host='A',master_user='slave',master_password='slave',master_auto_position=1;

<font color="red" >重要說明:</font>部分教程用的master_log_file & master_log_pos 參數(shù)來指定洲胖,但是slave一旦出現(xiàn)問題济榨,無法確認(rèn)斷節(jié)點(diǎn),數(shù)據(jù)容易造成不一致绿映,所以才引入gtid(即global transaction ID全局事務(wù)ID),想看相應(yīng)介紹的可以去mysql官網(wǎng)里面搜尋相應(yīng)的版本然后看看.

5擒滑、mysql命令查看從庫數(shù)據(jù)庫狀態(tài)

mysql>show slave status \G;

當(dāng)顯示的數(shù)據(jù)內(nèi)有:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
就說明可以了

6、自行驗(yàn)證主庫更新數(shù)據(jù)對從庫的影響

Mycat

mycat架構(gòu)圖

![avatar][basemycat]

MyCat簡介

簡介個(gè)毛線绘梦,[MyCat官網(wǎng)](http://mycat.io/)那么詳細(xì)的介紹不看橘忱,非要聽我在這摘錄赴魁?

環(huán)境安裝

由于Mycat是基于Java開發(fā)的卸奉,所以JDK環(huán)境先安裝好,再去安裝Mycat,安裝教程一大把颖御,我就不贅述了

實(shí)現(xiàn)過程

1榄棵、為簡單明了的看清配置信息,會(huì)刪除不影響結(jié)果的注釋潘拱,且本記錄只針對一個(gè)主庫和一個(gè)從庫疹鳄,分庫分表只需要加對應(yīng)的配置即可,配置文件中有相應(yīng)的詳細(xì)說明
2芦岂、可以進(jìn)入mysql把從庫的引擎改成MyISAM,如果不想從庫有寫的功能瘪弓,也可以將mysql設(shè)置成只讀數(shù)據(jù)庫

schema.xml 配置信息(完整的配置信息及解釋在文末):
主要是配置讀寫數(shù)據(jù)庫信息和對應(yīng)表信息

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <!-- 每一個(gè)schema代表一個(gè)邏輯數(shù)據(jù)庫 
        這里的name是程序端使用的數(shù)據(jù)庫名稱,對應(yīng)的數(shù)據(jù)庫賬號密碼在server.xml中
    -->
    <schema name="MycatDemo" checkSQLschema="true" sqlMaxLimit="100">
        <!--  auto sharding by id (long)
            每個(gè)邏輯數(shù)據(jù)庫下面對應(yīng)的是所有的表禽最,下方RDB代表真實(shí)數(shù)據(jù)庫
            name:對應(yīng)RDB中的表名
            primaryKey:RDB中該表的主鍵
            dataNode:這些表對應(yīng)的數(shù)據(jù)庫
            rule:對應(yīng)的分片規(guī)則
        -->
        <table name="article" primaryKey="article_id" autoIncrement="true" dataNode="dn1"
               rule="mod-long" />
    </schema>
    
    <!-- 各個(gè)數(shù)據(jù)結(jié)點(diǎn)的信息腺怯,便于上方schema使用 

    如果是多個(gè)數(shù)據(jù)結(jié)點(diǎn)和多個(gè)host,那就同步復(fù)制一份dataNode和dataHost數(shù)據(jù)川无,然后寫上對應(yīng)的配置信息
        name:結(jié)點(diǎn)的名稱
        dataHost:結(jié)點(diǎn)的主機(jī)地址
        database:RDB數(shù)據(jù)庫名稱
    -->
    <dataNode name="dn1" dataHost="localhost1" database="demo" />
    
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <!-- 心跳語句檢測呛占,檢測對應(yīng)的mysql是否正常運(yùn)行 -->
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="hostM1" url="11.11.11.11:3306" user="root"
                   password="root">
            <!-- can have multi read hosts -->
            <readHost host="hostS2" url="22.22.22.22:3306" user="root" password="root" />
        </writeHost>
        <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
    </dataHost>
    
</mycat:schema>

rule.xml 配置信息(完整的配置信息及解釋在文末):
主要定義一些分片規(guī)則和生成規(guī)則之類的

這里尤其要注意一點(diǎn),有個(gè)叫mod-long的function在schema.xml中引用到了懦趋,但是我只做了一分?jǐn)?shù)據(jù)庫晾虑,所以這里我把默認(rèn)的3改成了1,如果你有對應(yīng)的多個(gè)數(shù)據(jù)庫分表仅叫,則改成相應(yīng)的數(shù)量帜篇。

<?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="rule1">
        <rule>
            <columns>id</columns>
            <algorithm>func1</algorithm>
        </rule>
    </tableRule>

    <tableRule name="rule2">
        <rule>
            <columns>user_id</columns>
            <algorithm>func1</algorithm>
        </rule>
    </tableRule>

    <tableRule name="sharding-by-intfile">
        <rule>
            <columns>sharding_id</columns>
            <algorithm>hash-int</algorithm>
        </rule>
    </tableRule>
    <tableRule name="auto-sharding-long">
        <rule>
            <columns>id</columns>
            <algorithm>rang-long</algorithm>
        </rule>
    </tableRule>
    <tableRule name="mod-long">
        <rule>
            <columns>article_id</columns>
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>
    <tableRule name="sharding-by-murmur">
        <rule>
            <columns>id</columns>
            <algorithm>murmur</algorithm>
        </rule>
    </tableRule>
    <tableRule name="crc32slot">
        <rule>
            <columns>id</columns>
            <algorithm>crc32slot</algorithm>
        </rule>
    </tableRule>
    <tableRule name="sharding-by-month">
        <rule>
            <columns>create_time</columns>
            <algorithm>partbymonth</algorithm>
        </rule>
    </tableRule>
    <tableRule name="latest-month-calldate">
        <rule>
            <columns>calldate</columns>
            <algorithm>latestMonth</algorithm>
        </rule>
    </tableRule>
    
    <tableRule name="auto-sharding-rang-mod">
        <rule>
            <columns>id</columns>
            <algorithm>rang-mod</algorithm>
        </rule>
    </tableRule>
    
    <tableRule name="jch">
        <rule>
            <columns>id</columns>
            <algorithm>jump-consistent-hash</algorithm>
        </rule>
    </tableRule>

    <function name="murmur"
        class="io.mycat.route.function.PartitionByMurmurHash">
        <property name="seed">0</property><!-- 默認(rèn)是0 -->
        <property name="count">1</property><!-- 要分片的數(shù)據(jù)庫節(jié)點(diǎn)數(shù)量,必須指定诫咱,否則沒法分片 -->
        <property name="virtualBucketTimes">160</property><!-- 一個(gè)實(shí)際的數(shù)據(jù)庫節(jié)點(diǎn)被映射為這么多虛擬節(jié)點(diǎn)笙隙,默認(rèn)是160倍,也就是虛擬節(jié)點(diǎn)數(shù)是物理節(jié)點(diǎn)數(shù)的160倍 -->
        <!-- <property name="weightMapFile">weightMapFile</property> 節(jié)點(diǎn)的權(quán)重遂跟,沒有指定權(quán)重的節(jié)點(diǎn)默認(rèn)是1逃沿。以properties文件的格式填寫婴渡,以從0開始到count-1的整數(shù)值也就是節(jié)點(diǎn)索引為key,以節(jié)點(diǎn)權(quán)重值為值凯亮。所有權(quán)重值必須是正整數(shù)边臼,否則以1代替 -->
        <!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> 
            用于測試時(shí)觀察各物理節(jié)點(diǎn)與虛擬節(jié)點(diǎn)的分布情況,如果指定了這個(gè)屬性假消,會(huì)把虛擬節(jié)點(diǎn)的murmur hash值與物理節(jié)點(diǎn)的映射按行輸出到這個(gè)文件柠并,沒有默認(rèn)值,如果不指定富拗,就不會(huì)輸出任何東西 -->
    </function>

    <function name="crc32slot"
              class="io.mycat.route.function.PartitionByCRC32PreSlot">
        <property name="count">2</property><!-- 要分片的數(shù)據(jù)庫節(jié)點(diǎn)數(shù)量臼予,必須指定,否則沒法分片 -->
    </function>
    <function name="hash-int"
        class="io.mycat.route.function.PartitionByFileMap">
        <property name="mapFile">partition-hash-int.txt</property>
    </function>
    <function name="rang-long"
        class="io.mycat.route.function.AutoPartitionByLong">
        <property name="mapFile">autopartition-long.txt</property>
    </function>
    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <property name="count">1</property><!-- 只有一個(gè)數(shù)據(jù)庫我改成了1啃沪,默認(rèn)3 -->
    </function>

    <function name="func1" class="io.mycat.route.function.PartitionByLong">
        <property name="partitionCount">8</property>
        <property name="partitionLength">128</property>
    </function>
    <function name="latestMonth"
        class="io.mycat.route.function.LatestMonthPartion">
        <property name="splitOneDay">24</property>
    </function>
    <function name="partbymonth"
        class="io.mycat.route.function.PartitionByMonth">
        <property name="dateFormat">yyyy-MM-dd</property>
        <property name="sBeginDate">2015-01-01</property>
    </function>
    
    <function name="rang-mod" class="io.mycat.route.function.PartitionByRangeMod">
            <property name="mapFile">partition-range-mod.txt</property>
    </function>
    
    <function name="jump-consistent-hash" class="io.mycat.route.function.PartitionByJumpConsistentHash">
        <property name="totalBuckets">3</property>
    </function>
</mycat:rule>

server.xml 配置信息(完整的配置信息及解釋在文末):
主要定義sql服務(wù)相關(guān)的參數(shù)粘拾,例如賬號密碼,sql事務(wù)及最大文本

<?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:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system>
    <property name="useSqlStat">0</property>  <!-- 1為開啟實(shí)時(shí)統(tǒng)計(jì)创千、0為關(guān)閉 -->
    <property name="useGlobleTableCheck">0</property>  <!-- 1為開啟全加班一致性檢測缰雇、0為關(guān)閉 -->

        <property name="sequnceHandlerType">2</property>
      <!--  <property name="useCompression">1</property> --> <!--1為開啟mysql壓縮協(xié)議-->
        <!--  <property name="fakeMySQLVersion">5.6.20</property> --> <!--設(shè)置模擬的MySQL版本號-->
    <!-- <property name="processorBufferChunk">40960</property> -->
    <!-- 
    <property name="processors">1</property> 
    <property name="processorExecutor">32</property> 
     -->
        <!--默認(rèn)為type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
        <property name="processorBufferPoolType">0</property>
        <!-- 默認(rèn)是65535 64K 用于sql解析時(shí)最大文本長度  -->
        <property name="maxStringLiteralLength">65535</property>
        <property name="sequnceHandlerType">0</property>
        <property name="backSocketNoDelay">1</property>
        <property name="frontSocketNoDelay">1</property>
        <property name="processorExecutor">16</property>
        
            <property name="serverPort">8066</property> <property name="managerPort">9066</property> 
            <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> 
            <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property>
        <!--分布式事務(wù)開關(guān),0為不過濾分布式事務(wù)追驴,1為過濾分布式事務(wù)(如果分布式事務(wù)內(nèi)只涉及全局表械哟,則不過濾),2為不過濾分布式事務(wù),但是記錄分布式事務(wù)日志-->
        <property name="handleDistributedTransactions">0</property>
        
            <!--
            off heap for merge/order/group/limit      1開啟   0關(guān)閉
        -->
        <property name="useOffHeapForMerge">1</property>

        <!--
            單位為m
        -->
        <property name="memoryPageSize">1m</property>

        <!--
            單位為k
        -->
        <property name="spillsFileBufferSize">1k</property>

        <property name="useStreamOutput">0</property>

        <!--
            單位為m
        -->
        <property name="systemReserveMemorySize">384m</property>


        <!--是否采用zookeeper協(xié)調(diào)切換  -->
        <property name="useZKSwitch">true</property>


    </system>
    
    <!-- 全局SQL防火墻設(shè)置 -->
    <!-- 
    <firewall> 
       <whitehost>
          <host host="127.0.0.1" user="mycat"/>
          <host host="127.0.0.2" user="mycat"/>
       </whitehost>
       <blacklist check="false">
       </blacklist>
    </firewall>
    -->
    <!-- 相當(dāng)于Mycat邏輯數(shù)據(jù)庫的管理員賬號 數(shù)據(jù)庫名跟schema.xml中定義的保持一致-->
    <user name="mycatuser">
        <property name="password">mycatpwd</property>
        <property name="schemas">MycatDemo</property>
        <property name="defaultAccount">true</property>
        <!-- 表級 DML 權(quán)限設(shè)置 -->
        <!--        
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>       
         -->
    </user>
    <!-- 相當(dāng)于Mycat邏輯數(shù)據(jù)庫的只讀賬號 數(shù)據(jù)庫名跟schema.xml中定義的保持一致-->
    <user name="user">
        <property name="password">user</property>
        <property name="schemas">MycatDemo</property>
        <property name="readOnly">true</property>
    </user>

</mycat:server>

程序中連接數(shù)據(jù)庫的時(shí)候就不再是單純的mysql的連接和賬號密碼了殿雪,而是上面定義的:
數(shù)據(jù)庫名:MycatDemo(schema.xml中)
賬號:mycatuser(server.xml中)
密碼:mycatpwd(server.xml中)

驗(yàn)證讀寫分離

進(jìn)入mysql命令行暇咆,開啟主從兩個(gè)數(shù)據(jù)庫的sql日志,通過sql日志執(zhí)行的情況就能判斷讀寫使用的哪個(gè)庫

查看日期情況

mysql>show variables like '%general%';

開啟日志

mysql>SET GLOBAL general_log = 'On';

指定日志文件

mysql>SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log';

Mycat性能監(jiān)控

mycat有性能監(jiān)控的WEB管理端軟件丙曙,有需要的自行下載安裝

配置文件說明

server.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:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system>
    <property name="nonePasswordLogin">0</property> <!-- 0為需要密碼登陸爸业、1為不需要密碼登陸 ,默認(rèn)為0,設(shè)置為1則需要指定默認(rèn)賬戶-->
    <property name="useHandshakeV10">1</property>
    <property name="useSqlStat">0</property>  <!-- 1為開啟實(shí)時(shí)統(tǒng)計(jì)河泳、0為關(guān)閉 -->
    <property name="useGlobleTableCheck">0</property>  <!-- 1為開啟全加班一致性檢測沃呢、0為關(guān)閉 -->

    <property name="sequnceHandlerType">2</property> <!--0 本地文件方式  1 數(shù)據(jù)庫方式  2 時(shí)間戳方式-->
    <property name="subqueryRelationshipCheck">false</property> <!-- 子查詢中存在關(guān)聯(lián)查詢的情況下,檢查關(guān)聯(lián)字段中是否有分片字段 .默認(rèn) false -->
      <!--  <property name="useCompression">1</property>--> <!--1為開啟mysql壓縮協(xié)議-->
        <!--  <property name="fakeMySQLVersion">5.6.20</property>--> <!--設(shè)置模擬的MySQL版本號-->
    <!-- <property name="processorBufferChunk">40960</property> -->
    <!-- 
    <property name="processors">1</property> 
    <property name="processorExecutor">32</property> 
     -->
        <!--默認(rèn)為type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool -->
        <property name="processorBufferPoolType">0</property>
        <!--默認(rèn)是65535 64K 用于sql解析時(shí)最大文本長度 -->
        <!--<property name="maxStringLiteralLength">65535</property>-->
        <!--<property name="sequnceHandlerType">0</property>-->
        <!--<property name="backSocketNoDelay">1</property>-->
        <!--<property name="frontSocketNoDelay">1</property>-->
        <!--<property name="processorExecutor">16</property>-->
        <!--
            <property name="serverPort">8066</property> <property name="managerPort">9066</property> 
            <property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property> 
            <property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> -->
        <!--分布式事務(wù)開關(guān),0為不過濾分布式事務(wù)拆挥,1為過濾分布式事務(wù)(如果分布式事務(wù)內(nèi)只涉及全局表薄霜,則不過濾),2為不過濾分布式事務(wù),但是記錄分布式事務(wù)日志-->
        <property name="handleDistributedTransactions">0</property>
        
            <!--
            off heap for merge/order/group/limit      1開啟   0關(guān)閉
        -->
        <property name="useOffHeapForMerge">1</property>

        <!--
            單位為m
        -->
        <property name="memoryPageSize">64k</property>

        <!--
            單位為k
        -->
        <property name="spillsFileBufferSize">1k</property>

        <property name="useStreamOutput">0</property>

        <!--
            單位為m
        -->
        <property name="systemReserveMemorySize">384m</property>


        <!--是否采用zookeeper協(xié)調(diào)切換  -->
        <property name="useZKSwitch">false</property>

        <!-- XA Recovery Log日志路徑 -->
        <!--<property name="XARecoveryLogBaseDir">./</property>-->

        <!-- XA Recovery Log日志名稱 -->
        <!--<property name="XARecoveryLogBaseName">tmlog</property>-->
        <!--如果為 true的話 嚴(yán)格遵守隔離級別,不會(huì)在僅僅只有select語句的時(shí)候在事務(wù)中切換連接-->
        <property name="strictTxIsolation">false</property>
        
        <property name="useZKSwitch">true</property>
        
    </system>
    
    <!-- 全局SQL防火墻設(shè)置 -->
    <!--白名單可以使用通配符%或著*-->
    <!--例如<host host="127.0.0.*" user="root"/>-->
    <!--例如<host host="127.0.*" user="root"/>-->
    <!--例如<host host="127.*" user="root"/>-->
    <!--例如<host host="1*7.*" user="root"/>-->
    <!--這些配置情況下對于127.0.0.1都能以root賬戶登錄-->
    <!--
    <firewall>
       <whitehost>
          <host host="1*7.0.0.*" user="root"/>
       </whitehost>
       <blacklist check="false">
       </blacklist>
    </firewall>
    -->

    <!--用戶名是mycat-->
    <user name="mycat" defaultAccount="true">
        <!--密碼是123456-->
        <property name="password">123456</property>
        <!---可訪問的邏輯庫有mycatdb-->
        <property name="schemas">mycatdb</property>
        
        <!-- 表級 DML 權(quán)限設(shè)置 -->
        <!--        
        <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">mycatdb</property>
        <!--是否只讀-->
        <property name="readOnly">true</property>
    </user>

</mycat:server>

schema.xml文件說明

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

    <!-- checkSQLschema這個(gè)屬性默認(rèn)就是false纸兔,官方文檔的意思就是是否去掉表前面的數(shù)據(jù)庫的名稱惰瓜,
    ”select * from db1.testtable” ,設(shè)置為true就會(huì)去掉db1汉矿。但是如果db1的名稱不是schema的名稱崎坊,那么也不會(huì)被去掉,
    因此官方建議不要使用這種語法洲拇。同時(shí)默認(rèn)設(shè)置為false奈揍。-->
    
    <!-- sqlMaxLimit當(dāng)該值設(shè)置為某個(gè)數(shù)值時(shí)曲尸。每條執(zhí)行的 SQL 語句,如果沒有加上 limit 語句男翰,MyCat 也會(huì)自動(dòng)的加上所對應(yīng)的值另患。
    例如設(shè)置值為 100,執(zhí)行”select * from test_table”,則效果為“selelct * from test_table limit 100”.
    注意:如果運(yùn)行的 schema 為非拆分庫的蛾绎,那么該屬性不會(huì)生效昆箕。-->
    <schema name="mycatdb" checkSQLschema="false" sqlMaxLimit="100">
    
        <!-- name   該屬性定義邏輯表的表名 -->
        <!-- dataNode   該屬性定義這個(gè)邏輯表所屬的 dataNode, 該屬性的值需要和 dataNode 標(biāo)簽中 name 屬性的值相互對應(yīng)。 -->
        <!-- rule   該屬性用于指定邏輯表要使用的規(guī)則名字租冠,規(guī)則名字在 rule.xml 中定義鹏倘,必須與 tableRule 標(biāo)簽中 name 屬性屬性值一一對應(yīng) -->
        <!-- ruleRequired   該屬性用于指定表是否綁定分片規(guī)則,如果配置為 true顽爹,但沒有配置具體 rule 的話 纤泵,程序會(huì)報(bào)錯(cuò)。 -->
        <!-- primaryKey 該邏輯表對應(yīng)真實(shí)表的主鍵话原, -->
        <!-- type   該屬性定義了邏輯表的類型夕吻,目前邏輯表只有“全局表”和”普通表”兩種類型诲锹。全局表定義type=”global”繁仁,不定義的就是普通表。 -->
        <!-- autoIncrement  主鍵是否自增長归园。 -->
        <!-- subTables  分表黄虱,分表目前不支持Join。 -->
        <!-- needAddLimit是否自動(dòng)添加limit庸诱,默認(rèn)是開啟狀態(tài)捻浦。關(guān)閉請謹(jǐn)慎。 -->
        
        <!--rule="mod-long"  指定規(guī)則在rule中配置-->
        <table name="users" primaryKey="id" dataNode="dn1"/>
        <table name="orders" primaryKey="id" dataNode="dn1"/>
        
        
        <table name="product" primaryKey="id" dataNode="dn2"/>
        <table name="news" primaryKey="id" dataNode="dn2"/>
        

    </schema>

    <!--  Name  定義數(shù)據(jù)節(jié)點(diǎn)的名字桥爽,這個(gè)名字需要是唯一的-->
    <!-- dataHost   該屬性用于定義該分片屬于哪個(gè)數(shù)據(jù)庫實(shí)例 -->
    <!-- Database   該屬性用于定義該分片屬性哪個(gè)具體數(shù)據(jù)庫實(shí)例上的具體庫 -->
    <dataNode name="dn1" dataHost="localhost1" database="sharding1" />
    <dataNode name="dn2" dataHost="localhost2" database="sharding2" />

    <!--  name  唯一標(biāo)識 dataHost 標(biāo)簽朱灿,供上層的標(biāo)簽使用-->
    <!-- maxCon 指定每個(gè)讀寫實(shí)例連接池的最大連接。 -->
    <!-- minCon 指定每個(gè)讀寫實(shí)例連接池的最小連接钠四,初始化連接池的大小盗扒。 -->
    <!-- balance    負(fù)載均衡類型,目前的取值有4 種: 
    “0”, 不開啟讀寫分離機(jī)制缀去,所有讀操作都發(fā)送到當(dāng)前可用的 writeHost 上侣灶。 
    “1”,全部的 readHost 與 stand by writeHost(非主非從) 參與 select 語句的負(fù)載均衡缕碎,簡單的說褥影,當(dāng)雙主雙從模式(M1->S1,M2->S2咏雌,并且 M1 與 M2 互為主備)凡怎,正常情況下校焦,M2,S1,S2 都參與 select 語句的負(fù)載均衡。
    ”2”统倒,所有讀操作都隨機(jī)的在 writeHost斟湃、readhost 上分發(fā)。
    ”3”檐薯,所有讀請求隨機(jī)的分發(fā)到 wiriterHost 對應(yīng)的 readhost 執(zhí)行凝赛,writerHost 不負(fù)擔(dān)讀壓writeType 1. writeType=”0”, 所有寫操作發(fā)送到配置的第一個(gè) writeHost,第一個(gè)掛了切到還生存的第二個(gè)writeHost坛缕,重新啟動(dòng)后已切換后的為準(zhǔn)墓猎,切換記錄在配置文件中:dnindex.properties .2. writeType=”1”,所有寫操作都隨機(jī)的發(fā)送到配置的 writeHost赚楚,1.5 以后廢棄不推薦毙沾。默認(rèn)0就好了!-->
    <!-- dbType 指定后端連接的數(shù)據(jù)庫類型宠页,目前支持二進(jìn)制的 mysql 協(xié)議左胞,還有其他使用 JDBC 連接的數(shù)據(jù)庫。例如:mongodb举户、oracle烤宙、spark 等. -->
    <!-- dbDriver   指定連接后端數(shù)據(jù)庫使用的 Driver,目前可選的值有 native 和 JDBC俭嘁。使用 native 的話躺枕,因?yàn)檫@個(gè)值執(zhí)行的是二進(jìn)制的 mysql 協(xié)議,所以可以使用 mysql 和 maridb供填。其他類型的數(shù)據(jù)庫則需要使用 JDBC 驅(qū)動(dòng)來支持拐云。 -->
    <!-- switchType “-1” 表示不自動(dòng)切換; “1” 默認(rèn)值近她,自動(dòng)切換叉瘩; 
                    “2” 基于 MySQL 主從同步的狀態(tài)決定是否切換心跳語句為 show slave status; 
                    “3” 基于 MySQL galary cluster 的切換機(jī)制(適合集群)(1.4.1)心跳語句為 show status like ‘wsrep%’.                  
    -->
    <!--slaveThreshold:指定從節(jié)點(diǎn)的最大個(gè)數(shù)-->
   

    <dataHost name="localhost1" 
              maxCon="1000" 
              minCon="10" 
              balance="0"
              writeType="0" 
              dbType="mysql" 
              dbDriver="native" 
              switchType="1"  
              slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        
        <!--host    用于標(biāo)識不同實(shí)例粘捎,一般 writeHost 我們使用*M1薇缅,readHost 我們用*S1。-->
        <!--url 后端實(shí)例連接地址晌端。Native:地址:端口 JDBC:jdbc的url-->
        <!--password    后端存儲(chǔ)實(shí)例需要的密碼-->
        <!--user    后端存儲(chǔ)實(shí)例需要的用戶名字-->
        <!--weight  權(quán)重 配置在 readhost 中作為讀節(jié)點(diǎn)的權(quán)重-->
        <!--usingDecrypt    是否對密碼加密捅暴,默認(rèn)0。具體加密方法看官方文檔咧纠。-->
        <writeHost host="hostM1" url="47.94.158.155:3306" user="root"
                   password="TJXtjx_19991007">
        </writeHost>
    </dataHost>
    
    
    <dataHost name="localhost2" 
              maxCon="1000" 
              minCon="10" 
              balance="0"
              writeType="0" 
              dbType="mysql" 
              dbDriver="native" 
              switchType="1"  
              slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="hostM2" url="47.94.158.155:3306" user="root"
                   password="TJXtjx_19991007">
        </writeHost>
    </dataHost>

</mycat:schema>

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="rule1">
        <rule>
            <columns>id</columns>
            <algorithm>func1</algorithm>
        </rule>
    </tableRule>

    <tableRule name="rule2">
        <rule>
            <columns>user_id</columns>
            <algorithm>func1</algorithm>
        </rule>
    </tableRule>

    <tableRule name="sharding-by-intfile">
        <rule>
            <columns>sharding_id</columns>
            <algorithm>hash-int</algorithm>
        </rule>
    </tableRule>
    <tableRule name="auto-sharding-long">
        <rule>
            <columns>id</columns>
            <algorithm>rang-long</algorithm>
        </rule>
    </tableRule>
    <tableRule name="mod-long">
        <rule>
            <columns>id</columns>
            <algorithm>mod-long</algorithm>
        </rule>
    </tableRule>
    <tableRule name="sharding-by-murmur">
        <rule>
            <columns>id</columns>
            <algorithm>murmur</algorithm>
        </rule>
    </tableRule>
    <tableRule name="crc32slot">
        <rule>
            <columns>id</columns>
            <algorithm>crc32slot</algorithm>
        </rule>
    </tableRule>
    <tableRule name="sharding-by-month">
        <rule>
            <columns>create_time</columns>
            <algorithm>partbymonth</algorithm>
        </rule>
    </tableRule>
    <tableRule name="latest-month-calldate">
        <rule>
            <columns>calldate</columns>
            <algorithm>latestMonth</algorithm>
        </rule>
    </tableRule>
    
    <tableRule name="auto-sharding-rang-mod">
        <rule>
            <columns>id</columns>
            <algorithm>rang-mod</algorithm>
        </rule>
    </tableRule>
    
    <tableRule name="jch">
        <rule>
            <columns>id</columns>
            <algorithm>jump-consistent-hash</algorithm>
        </rule>
    </tableRule>

    <function name="murmur"
        class="io.mycat.route.function.PartitionByMurmurHash">
        <property name="seed">0</property><!-- 默認(rèn)是0 -->
        <property name="count">2</property><!-- 要分片的數(shù)據(jù)庫節(jié)點(diǎn)數(shù)量蓬痒,必須指定,否則沒法分片 -->
        <property name="virtualBucketTimes">160</property><!-- 一個(gè)實(shí)際的數(shù)據(jù)庫節(jié)點(diǎn)被映射為這么多虛擬節(jié)點(diǎn)漆羔,默認(rèn)是160倍梧奢,也就是虛擬節(jié)點(diǎn)數(shù)是物理節(jié)點(diǎn)數(shù)的160倍 -->
        <!-- <property name="weightMapFile">weightMapFile</property> 節(jié)點(diǎn)的權(quán)重狱掂,沒有指定權(quán)重的節(jié)點(diǎn)默認(rèn)是1。以properties文件的格式填寫亲轨,以從0開始到count-1的整數(shù)值也就是節(jié)點(diǎn)索引為key趋惨,以節(jié)點(diǎn)權(quán)重值為值。所有權(quán)重值必須是正整數(shù)惦蚊,否則以1代替 -->
        <!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property> 
            用于測試時(shí)觀察各物理節(jié)點(diǎn)與虛擬節(jié)點(diǎn)的分布情況器虾,如果指定了這個(gè)屬性,會(huì)把虛擬節(jié)點(diǎn)的murmur hash值與物理節(jié)點(diǎn)的映射按行輸出到這個(gè)文件蹦锋,沒有默認(rèn)值兆沙,如果不指定,就不會(huì)輸出任何東西 -->
    </function>

    <function name="crc32slot"
              class="io.mycat.route.function.PartitionByCRC32PreSlot">
    </function>
    <function name="hash-int"
        class="io.mycat.route.function.PartitionByFileMap">
        <property name="mapFile">partition-hash-int.txt</property>
    </function>
    <function name="rang-long"
        class="io.mycat.route.function.AutoPartitionByLong">
        <property name="mapFile">autopartition-long.txt</property>
    </function>
    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
        <!-- how many data nodes -->
        <property name="count">3</property>
    </function>

    <function name="func1" class="io.mycat.route.function.PartitionByLong">
        <property name="partitionCount">8</property>
        <property name="partitionLength">128</property>
    </function>
    <function name="latestMonth"
        class="io.mycat.route.function.LatestMonthPartion">
        <property name="splitOneDay">24</property>
    </function>
    <function name="partbymonth"
        class="io.mycat.route.function.PartitionByMonth">
        <property name="dateFormat">yyyy-MM-dd</property>
        <property name="sBeginDate">2015-01-01</property>
    </function>
    
    <function name="rang-mod" class="io.mycat.route.function.PartitionByRangeMod">
            <property name="mapFile">partition-range-mod.txt</property>
    </function>
    
    <function name="jump-consistent-hash" class="io.mycat.route.function.PartitionByJumpConsistentHash">
        <property name="totalBuckets">3</property>
    </function>
</mycat:rule>

[basemycat]:data:image/webp;base64,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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莉掂,一起剝皮案震驚了整個(gè)濱河市葛圃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌憎妙,老刑警劉巖库正,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掌测,死亡現(xiàn)場離奇詭異祈餐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)况既,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門阅嘶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來属瓣,“玉大人,你說我怎么就攤上這事讯柔。” “怎么了护昧?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵魂迄,是天一觀的道長。 經(jīng)常有香客問我惋耙,道長捣炬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任绽榛,我火速辦了婚禮湿酸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘灭美。我一直安慰自己推溃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布届腐。 她就那樣靜靜地躺著铁坎,像睡著了一般蜂奸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上硬萍,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天扩所,我揣著相機(jī)與錄音,去河邊找鬼朴乖。 笑死祖屏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的买羞。 我是一名探鬼主播赐劣,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哩都!你這毒婦竟也來了魁兼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤漠嵌,失蹤者是張志新(化名)和其女友劉穎咐汞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體儒鹿,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡化撕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了约炎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片植阴。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖圾浅,靈堂內(nèi)的尸體忽然破棺而出掠手,到底是詐尸還是另有隱情,我是刑警寧澤狸捕,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布喷鸽,位于F島的核電站,受9級特大地震影響灸拍,放射性物質(zhì)發(fā)生泄漏做祝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一鸡岗、第九天 我趴在偏房一處隱蔽的房頂上張望混槐。 院中可真熱鬧,春花似錦轩性、人聲如沸声登。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捌刮。三九已至碰煌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間绅作,已是汗流浹背芦圾。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留俄认,地道東北人个少。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像眯杏,于是被迫代替她去往敵國和親夜焦。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353