<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                >[info] mycat 配置詳解 **三個配置文件:(/usr/local/mycat/conf)** * schema.xml 邏輯庫、表、分片節點等內容 * rule.xml 分片規則文件 * server.xml 用戶及系統相關變量,如端口等 ### **1. schema.xml 配置** #### **1.1 schema 標簽** 用來定義mycat實例中的邏輯庫,mycat可以有多個邏輯庫,每個邏輯庫都有自己的相關配置。可以使用schema標簽來劃分這些不同的邏輯庫。如果不配置schema標簽,所有表的配置會屬于同一個默認的邏輯庫。 邏輯庫的概念和MySql的database的概念一樣,我們在查詢兩個不同邏輯庫中的表的時候,需要切換到該邏輯庫下進行查詢。 ~~~ <schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100"> ~~~ **name:** 邏輯庫的名字,配置完成以后!用mycat身份登錄以后,查看的數據庫就名字就是`name`定義的`TESTDB` **checkSQLschema:** 當該值為true時,例如我們執行語句select * from TESTDB.company 。mycat會把語句修改為 select * from company 去掉TESTDB **sqlMaxLimit:** 該值設置為某個數值時,每條執行的sql語句,如果沒有加上limit語句,Mycat會自動加上對應的值。不寫的話,默認返回所有的值。需要注意的是,如果運行的schema為非拆分庫的,那么該屬性不會生效。需要自己sql語句加limit。 ***** #### **1.2 table 標簽** table標簽定義了mycat中的邏輯表,所有需要拆分的表都需要在這個標簽中定義。 ~~~ <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> <table name="company" primaryKey="ID" type="global" dataNode="dn1,dn2,dn3" /> ~~~ **name:** name屬性代表了邏輯表的表名,同一個schema中name標簽中定義的名字必須唯一。如同我們在數據庫執行create table 命令指定的名字一樣。 **dataNode:** 表,存儲再哪個數據庫的節點中,多個用`“,”`隔開,該屬性的值需要和dataNode標簽中的name值相對應。 **rule:** 該屬性指定邏輯表使用的規則名字,規則名字在rule.xml中定義,必須與tableRule標簽中name屬性對應。 **ruleRequired:** 該屬性用于指定是否綁定分片規則,如果配置為true,但是沒有配置具體rule時候,就會報錯 **primaryKey:** 該屬性代表了,邏輯表對應真實表的主鍵。例如:分片的規則是使用非主鍵進行分片的,那么在使用主鍵查詢的時候,就會發送查詢語句到所有配置的DN上,如果使用該屬性配置真實表的主鍵,那么mycat會緩存主鍵與具體DN的信息,那么再次使用非主鍵進行查詢的時候就不會進行廣播式的查詢,就會直接發送語句給具體的DN,但是盡管配置該屬性,如果緩存并沒有命中的話,還是會發送語句給具體的DN 來獲取數據。 **type:** 該屬性定義了邏輯表的類型,目前邏輯表只有全局表和普通表 ***** #### **1.4 childTable 標簽** childTable 標簽用于定義 E-R 分片的子表,通過標簽上的屬性與父表進行關聯。 ~~~ <table name="customer" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile"> <childTable name="c_a" primaryKey="ID" joinKey="customer_id" parentKey="id" /> </table> ~~~ **name:** 子表的名稱 **joinKey:** 子表中字段的名稱 **parentKey:** 父表中字段名稱 **primaryKey:** 同Table **needAddLimit** 同Table ***** #### **1.5 dataNode 標簽** datanode標簽定義了mycat中的數據節點,也就是我們所說的數據分片。一個datanode標簽就是一個獨立的數據分片。 ~~~ <dataNode name="dn1" dataHost="localhost1" database="mytest1" /> <dataNode name="dn2" dataHost="localhost1" database="mytest2" /> <dataNode name="dn3" dataHost="localhost1" database="mytest3" /> ~~~ 例子中的表述的意思為,使用名字為localhost1數據庫實例上的mytest物理數據庫,這就組成一個數據分片,最后我們用dn1來標示這個分片。 **name:** 定義數據節點的名字,這個名字需要唯一。我們在table標簽上用這個名字來建立表與分片對應的關系 **dataHost:** 用于定義該分片屬于哪個數據庫實例,屬性與datahost標簽上定義的name對應 **database:** 用于定義該分片屬于數據庫實例上的具體庫。(該分片上真實的數據庫的名字) ***** #### **1.6 dataHost 標簽** 這個標簽直接定義了具體數據庫實例,讀寫分離配置和心跳語句。 ~~~ <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="123456"> <!-- can have multi read hosts --> <readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" /> </writeHost> <writeHost host="hostS1" url="localhost:3316" user="root" password="123456" /> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost> ~~~ **name:** 唯一標示dataHost標簽,供上層使用 **maxCon:** 指定每個讀寫實例連接池的最大連接。 **minCon:** 指定每個讀寫實例連接池的最小連接,初始化連接池的大小 **balance:負載均稱類型:** ~~~ 0:不開啟讀寫分離機制,所有讀操作都發送到當前可用的writeHost上 1:全部的readHost與stand by writeHost參與select語句的負載均衡,簡單的說,當雙主雙從模式(M1-S1,M2-S2 并且M1 M2互為主備),正常情況下,M2,S1,S2都參與select語句的負載均衡。 2:所有讀操作都隨機的在writeHost、readHost上分發 3:所有讀請求隨機的分發到writeHst對應的readHost執行,writeHost不負擔讀寫壓力。 ~~~ **writeType:負載均衡類型。** ~~~ 0:所有的寫操作發送到配置的第一個writeHost,第一個掛了切換到第二個。切換記錄在文件dnindex.properties 1:所有的鞋操作都隨機的發送到配置的writeHost,1.5以后版本廢棄不推薦。 ~~~ **dbType:** 指定后端鏈接的數據庫類型目前支持二進制的mysql協議,還有其他使用jdbc鏈接的數據庫,例如:mongodb,oracle,spark等 **dbDriver:** 指定連接后段數據庫使用的driver,目前可選的值有native和JDBC。使用native的話,因為這個值執行的是二進制的mysql協議,所以可以使用mysql和maridb,其他類型的則需要使用JDBC驅動來支持。 如果使用JDBC的話需要符合JDBC4標準的驅動jar 放到mycat\\lib目錄下,并檢查驅動jar包中包括如下目錄結構文件 META-INF\\services\\java.sql.Driver。 在這個文件寫上具體的driver類名,例如com.mysql.jdbc.DriverwriteHost readHost 指定后端數據庫的相關配置給mycat,用于實例化后端連接池。 **switchType:** ~~~ -1不自動切換 1 默認值 自動切換 2 基于MySql主從同步的狀態決定是否切換(心跳語句為 show slave status) 3 基于mysql galary cluster 的切換機制(適合集群)1.4.1心跳語句為 show status like 'wsrep%' ~~~ **slaveThreshold:** 用于控制從庫(Slave)與主庫(Master)之間同步延遲的閾值。 當從庫的同步延遲超過這個閾值時,`mycat`會認為從庫的數據與主庫不一致,從而避免將讀請求發送到該從庫,以保證數據的一致性。這個參數的具體設置需要根據實際的業務需求和系統性能進行調整。 需要注意的是,`slaveThreshold`參數只是`mycat`中的一個配置選項,要實現讀寫分離和主從同步,還需要結合其他參數和配置進行設置。同時,也需要根據具體的業務場景和需求來選擇合適的讀寫分離和主從同步策略。 ***** #### **1.7 heartbeat 標簽** 這個標簽內指明用于和后端數據庫進行心跳檢查的語句。 例如:MYSQL 可以使用`select user()`,Oracle 可以使用`select 1 from dual`等。 ***** #### **1.8 writeHost /readHost 標簽** 這兩個標簽都指定后端數據庫的相關配置,用于實例化后端連接池。唯一不同的是,writeHost 指定寫實例、readHost 指定讀實例。 在一個 dataHost 內可以定義多個 writeHost 和 readHost。但是,如果 writeHost 指定的后端數據庫宕機,那么這個 writeHost 綁定的所有 readHost 都將不可用。 另一方面,由于這個 writeHost 宕機,系統會自動的檢測到,并切換到備用的 writeHost 上去。這兩個標簽的屬性相同,這里就一起介紹。 * `host`: 用于標識不同實例,一般 writeHost 我們使用*M1,readHost 我們用*S1。 * `url`: 后端實例連接地址。Native:地址:端口 JDBC:jdbc的url * `password`: 后端存儲實例需要的密碼 * `user`: 后端存儲實例需要的用戶名字 * `weight`: 權重 配置在 readhost 中作為讀節點的權重 * `usingDecrypt`: 是否對密碼加密,默認0。具體加密方法看官方文檔。 ***** ### **2. server.xml 配置** ***** ### **3. rule.xml 配置**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看