1. 程式人生 > >mycat中間件安裝與使用

mycat中間件安裝與使用

vm虛擬機 直接 rect release 心跳 slave node name 中間

1、下載:

下載地址在:http://dl.mycat.io/      選擇1.6-release版本下載

2、安裝:

直接解壓即可:

tar -zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

3、配置:

先配置JDK,和wrapper.conf

wrapper.conf:用來配置JVM虛擬機內存

wrapper.java.command=/lib/jvm/bin/java      #JAVA目錄下JAVA命令所在

wrapper.working.dir=..

---------------------------JVM參數調優-------------------------------------

wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
wrapper.java.additional.5=-XX:MaxDirectMemorySize=2G
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Xmx4G
wrapper.java.additional.11=-Xms1G

# Java Additional Parameters
#wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
#堆內存適度大小,直接映射內存盡可能大,兩種一起占據服務器的1/2-2/3的內存
wrapper.java.additional.5=-XX:MaxDirectMemorySize=6G
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
#無論擴展還是縮減新生代空間或老年代空間都需要進行Full GC,而Full GC會降低程序的吞吐量並導致更長的延遲。
wrapper.java.additional.10=-Xmx4G
wrapper.java.additional.11=-Xms4G

mycat配置主要有三個文件配置,都在conf目錄下。分別是:server.xml schema.xml rule.xml

server.xml:主要用來配置連接mycat的用戶與密碼。

<user name="root">        #配置連接mycat的用戶名
  <property name="password">123456</property>      #配置連接mycat的密碼
    <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>

schema.xml:主要用來配置數據庫設置

<?xml version="1.0" ?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <!-- 設置表的存儲方式.schema name="TESTDB" 與 server.xml中的 test_schema 設置一致  -->
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">    #name屬性要與server.xml中設置的一致   sqlMaxLimit:select 時默認的limit,避免查詢全表
        <table name="test_one" primaryKey="id" dataNode="dn$1-3" rule="sharding-by-date"/>    #這裏配置表分片,也就是分表。table:表名,物理數據庫中表名   dataNode:表存儲到哪些節點,多個節點用逗號分隔。節點為下文dataNode設置的name
    </schema>

    #節點名,與table中dataNode對應    dataHost:物理數據庫名,與datahost中name對應,下面的標簽   database:物理數據庫中數據庫名
    <dataNode name="dn1" dataHost="dh_test" database="db_1"/>
    <dataNode name="dn2" dataHost="dh_test" database="db_2"/>
    <dataNode name="dn3" dataHost="dh_test" database="db_3"/>

    #dataHost:物理數據庫名,與dataNode中dataHost對應   balance:負載均衡方式,下面有說明    writeType:寫入方式   dbType:數據庫類型   
    <dataHost name="dh_test" maxCon="1000" minCon="10" balance="3" writeType="0"
              dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
        #心跳檢查語句,後面有分號
        <heartbeat>show slave status</heartbeat>
        <writeHost host="hostM1" url="192.168.252.121:3306" user="root" password="mima">
            <readHost host="hostS2" url="192.168.252.122:3306" user="root" password="mima"/>
        </writeHost>
    </dataHost>

</mycat:schema>

balance:

負載均衡類型,目前的取值有 3 種:

1.balance="0", 不開啟讀寫分離機制,所有讀操作都發送到當前可用的 write Host 上。

2.balance="1",全部的 read Host 與 stand by write Host 參與 select 語句的負載均衡
3.balance="2",所有讀操作都隨機的在 write Host、readhost 上分發。
4.balance="3",所有讀請求隨機的分發到 wiriter Host 對應的 readhost 執行,writer Host 不負擔讀壓

 

mycat中間件安裝與使用