echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這纔是真正的堪稱強大!!!mysql
安裝完成以後,咱們對Mycat的重要配置文件進行了解析,到這裏已經對Mycat有了必定的認識,那麼咱們開始來啓動Mycat並鏈接,作一些簡單的配置和使用操做。
使用Mycat實現讀寫分離其實比較簡單,只要關注他的兩個配置文件schema.xml/server.xml。git
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="userDB" checkSQLschema="true" sqlMaxLimit="100"> <table name="user" primaryKey="id" dataNode="dn1" /> </schema> <dataNode name="dn1" dataHost="host1" database="test" /> <!-- 讀寫分離 --> <dataHost name="host1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM" url="192.168.222.132:3306" user="root" password="123456"> <readHost host="hostS1" url="192.168.222.133:3306" user="root" password="123456" /> <readHost host="hostS2" url="192.168.222.134:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema>
<?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/"> <!-- Mycat中有兩個重要的標籤,分別是user、system --> <!-- system標籤與系統配置有關 --> <system> <!-- 配置該屬性的時候必定要保證mycat的字符集和mysql 的字符集是一致的。 若是須要配置特殊字符集,如:utf8mb4,則能夠在index_to_charset.properties中配置,配置格式 爲「ID=字符集」,例如:「224=utf8mb4」--> <property name="charset">utf8</property> <!-- 1爲開啓實時統計、0爲關閉 --> <property name="useSqlStat">0</property> <!-- 0爲須要密碼登錄、1爲不須要密碼登錄 ,默認爲0,設置爲1則須要指定默認帳戶--> <property name="nonePasswordLogin">0</property> <property name="useHandshakeV10">1</property> <!-- 1爲開啓全加班一致性檢測、0爲關閉 --> <property name="useGlobleTableCheck">0</property> <!-- SQL 執行超時 單位:秒--> <property name="sqlExecuteTimeout">300</property> <!-- 指定使用 Mycat 全局序列的類型。 0 爲本地文件方式,1 爲數據庫方式,2 爲時間戳序列方式,3 爲分佈式ZK ID 生成器,4 爲 zk 遞增 id 生成。 --> <property name="sequnceHandlerType">5</property> <!-- 必須帶有MYCATSEQ_或者 mycatseq_進入序列匹配流程 注意MYCATSEQ_有空格的狀況 --> <property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property> <!-- 子查詢中存在關聯查詢的狀況下,檢查關聯字段中是否有分片字段 .默認 false --> <property name="subqueryRelationshipCheck">false</property> <property name="sequenceHanlderClass">io.mycat.route.sequence.handler.HttpIncrSequenceHandler</property> <!-- 默認爲type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool --> <property name="processorBufferPoolType">0</property> <!-- 分佈式事務開關,0爲不過濾分佈式事務,1爲過濾分佈式事務(若是分佈式事務內只涉及全局表,則不過濾),2爲不過濾分佈式事務,可是記錄分佈式事務日誌--> <property name="handleDistributedTransactions">0</property> <!-- off heap for merge/order/group/limit 1開啓 0關閉 --> <property name="useOffHeapForMerge">0</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協調切換 --> <property name="useZKSwitch">false</property> <!--若是爲 true的話 嚴格遵照隔離級別,不會在僅僅只有select語句的時候在事務中切換鏈接--> <property name="strictTxIsolation">false</property> <property name="useZKSwitch">true</property> </system> <!-- name="root" 定義登陸用戶名 --> <user name="root"> <!-- 定義了登陸密碼 --> <property name="password">123456</property> <property name="schemas">userDB</property> </user> </mycat:server>
進入bin目錄 ./mycat start
首先咱們在主服務器上增長兩條數據,因爲咱們實現mysql主從複製,這個時候增長的兩條數據,其餘兩臺從服務器都會同時增長。數據以下:github
在主服務器上添加的數據因爲MySQL主從複製,因此在每一臺服務器上看到的都是同樣的數據,可是在從服務器上添加的數據主服務器和另一臺服務器上不會有,咱們就利用這個特性添加。
在從服務器192.168.222.134上添加一條數據,以下:sql
134服務器上就具有了其餘服務器不具有的數據,因爲咱們在schema中配置了寫功能服務器13二、讀133/134兩臺,因此Mycat讀取數據的時候應該是隨機讀取133/134中的某一臺,咱們登錄Mycat而後打開user表,多刷新幾回就能夠看到id爲5的那條數據時有時無數據庫
登錄Mycat報錯,先檢查Mycat是否已經成功啓動,若是沒有啓動能夠進入mycat文件下logs目錄中,打開wrapper.log查看緣由express
作一個有底線的博客主apache