Mycat的配置(一)

     Schema.xml做爲Mycat中最重要的配置文件之一,管理着Mycat的邏輯庫、表、分片規則、DataNode以及DataSource。java

1.Schema標籤

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"></schema>

  Schema標籤用於定義Mycat實例中的邏輯庫,Mycat能夠有多個邏輯庫,每一個邏輯庫都有本身的相關配置。mysql

   標籤相關屬性:sql

  • dataNode

       該屬性用天綁定邏輯庫到某個具體的database上,1.3版本若是配置了dataNode,則不能夠配置分片表,1.4能夠配置分片表信息。mongodb

       1.3版本的配置以下:數據庫

<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
<!—schema標籤上配置了dataNode,在1.3版本中,這裏面不能配置任何表-->
</schema>

       1.4及之後的配置以下:後端

<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2">
<!—配置須要分片的表-->
<table name=「tuser」 dataNode=」dn1」/>
</schema>

    那麼如今tuser就綁定到dn1所配置的具體database上,能夠直接訪問這個database,沒有配置的表則會走默認節點dn2,這裏注意沒有配置在分片裏面的表工具查看沒法顯示,但能夠正常使用。緩存

  • checkSQLschema

       當設置成true時,若是sql語句中的表前面加有數據庫名 如:select * from TESTDB.tuser,則Mycat會把sql語句中的數據庫名去掉修改爲:select  * from tuser ,通常設置成false。  oracle

  •  sqlMaxLimit

        該值爲一整數,如:100,則當執行sql:select * from tuser時,和執行select * from tuser limit  100,若是sql語句中顯式指定limit大小,以顯示指定的大小爲準。注意,若是運行的schema爲非拆分庫的,該屬性不會生效。 負載均衡

2.dataNode標籤     

<dataNode name="dn1" dataHost="lch3307" database="db1" ></dataNode>

 dataNode標籤訂義了Mycat中的數據節點,也就是一般所說的數據分片,一個dataNode標籤就是一個獨立的數據分片。工具

dataNode標籤相關屬性:

  • name

       定義數據節點的名字,這個名字須要惟一。      

  • dataHost       

      定義分片屬於哪一個數據庫實例(一個邏輯名稱)。

  • database

      這個是數據庫中的真實數據庫名稱。

3.dataHost標籤

<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
                writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
                <heartbeat>select user()</heartbeat>
                <writeHost host="hostM1" url="192.192.16.34:3306" user="root"
                        password="Falsesoul1207">
                <readHost host="hostS2" url="192.192.16.31:3306" user="root" password="Falsesoul1207"/>
                </writeHost>
        </dataHost>

  dataHost標籤的相關屬性:

  • name

      惟一標識dataHost標籤,供上層的標籤使用。

  • maxCon

     每一個讀寫實例鏈接池的最大鏈接數,標籤內嵌套的writeHost、readHost標籤都會使用這個屬性值來實例化出鏈接池的最大鏈接數。

  • minCon

     每一個讀寫實例鏈接池的最小鏈接,即初始化鏈接池的大小。

  • balance

      負載均衡類型,目前有如下幾種取值:

      balance="0",不開啓讀寫分離機制,全部讀操做都會發送到當前可用的writeHost上。(針對如上配置,全部讀請求全落到了writeHost(34)上)

      balance="1",所有的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,而且M1和M2互爲主備),正常狀況下,M2,S1,S2都參與select語句的負載均衡。(針對如上配置,全部讀請求全落到了readHost(31)上)

      balance="2",全部讀操做都隨機的在writeHost、readHost上分發。(針對如上配置,全部讀請求所有落到writeHost(34)和readHost(31)上)

      balance="3",全部讀請求隨機的分發到writeHost對應的readHost執行,writeHost不負擔讀壓力,注意balance=3只在1.4及之後的版本才生效。(針對如上配置,全部讀請求全落到了readHost(31)上)

  • writeType

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

     writeType="0",全部寫操做發送到配置的第一個writeHost,第一個掛了切到還生存的第二個writeHost,從新啓動後已切換後的爲準,切換記錄在配置文件中:dnindex.properties,dnindex.properties爲本地緩存相關配置,一般用於主從切換記錄,記錄當前所用的writeHost的index(第一個爲0,第二個爲1,依次類推),不能刪除和擅自修改。

    writeType="1",全部寫操做都隨機的發送到配置的writeHost,1.5之後廢棄不推薦。

  • dbType

       指定後端鏈接數據庫類型,目前支持二進制的mysql協議,還有其餘使用JDBC鏈接的數據庫,如:mongodb、oracle、spark等。

  •  dbDriver

       指定鏈接後端數據庫使用的Driver,目前可選的值有native和JDBC。使用native的話,由於這個值執行的是二進制的mysql協議,因此可使用mysql和maridb。其餘類型的數據庫則須要使用JDBC驅動來支持,使用JDBC的把對應驅動JAR包放到MYCAT\lib目錄下,並檢查驅動JAR包中包括以下目錄結構的文件:META-INF\services\java.sql.Driver。在這個文件內寫上具體的 Driver 類名,例如: com.mysql.jdbc.Driver。

  • switchType

      -1 表示不自動切換

        1 默認值,自動切換

       2 基於Mysql主從同步的狀態決定不否切換

       3  基於Mysql galary cluster的切換機制(適合集羣)

       心跳語句爲 show status like 'wsrep%'

     dataHost的子標籤以下:

  1. Heartbeat

       這個標籤指明用於和後端數據庫進行心跳檢查的語句。

    2.writeHost、readHost

       這兩個標籤都指定後端數據庫的相關配置給mycat,用於實例化後端鏈接池。writeHost指定寫實例,readHost指定讀實例。在一個dataHost內能夠定義多個writeHost和readHost,可是,若是writeHost指定的後端數據庫宕機,那麼這個writeHost綁定的全部readHost都將不可用,因爲這個writeHost宕機系統會自動檢測到,並切換到備用的writeHost上去。 

   

  • host

      用於標示不一樣實例,通常writeHost咱們使用*M1,readHost咱們用*S1。

  • url     

     後端數據庫鏈接地址。

  • user和password

     後端數據庫的用戶名和密碼

  • weight    

     權重,配置在readHost中做爲讀節點的權重(1.4之後版本支持)

  • usingDecrypt    

     是否對密碼加密,默認是0,否。     

相關文章
相關標籤/搜索