Mycat 讀寫分離: 讀寫分離,簡單地說是把對資料庫的讀和寫操作分開,以對應不同的資料庫伺服器。主資料庫提供寫操作,從資料庫提供讀操作,這樣能有效地減輕單台資料庫的壓力。主資料庫進行寫操作後,數據及時同步到所讀的資料庫,儘可能保證讀、寫資料庫的數據一致,比如MySQL的主從複製、Oracle的da ...
Mycat 讀寫分離:
讀寫分離,簡單地說是把對資料庫的讀和寫操作分開,以對應不同的資料庫伺服器。主資料庫提供寫操作,從資料庫提供讀操作,這樣能有效地減輕單台資料庫的壓力。主資料庫進行寫操作後,數據及時同步到所讀的資料庫,儘可能保證讀、寫資料庫的數據一致,比如MySQL的主從複製、Oracle的data guard、SQL Server的複製訂閱等。
‘
看上圖 我們要進行對資料庫的查詢操作 當Mycat收到一個SQL時,會先解析這個SQL,查找涉及到的表,然後看此表的定義,如果有分片規則,則獲取到SQL里分片字
段的值,並匹配分片函數,得到該SQL對應的分片列表,然後將SQL發往這些分片去執行,最後收集和處理所有分片返回的結果
數據,並輸出到客戶端。以select * from Orders where prov=?語句為例,查到prov=wuhan,按照分片函數,wuhan返回
dn1,於是SQL就發給了MySQL1,去取DB1上的查詢結果,並返回給用戶。
我們下麵來進行 對Mycat的操作和使用
首先 要進入 Mycat的官網
Mycat官網:http://www.mycat.io/
官網瞭解Mycat原理。
Mycat下載地址:http://dl.mycat.io/
下載:
建議大家選擇 1.6-RELEASE 最新版本。
進行使用Linux部署Mycat
上傳 解壓縮到 tar -zxvf Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz -C /usr/local
會解壓縮成一個Mycat的文件夾,進入文件夾 顯示有七個目錄 bin catlet conf lib logs tmlogs version.txt ,我們只需要用到 bin 和 conf 文件夾,
進入conf 文件夾, vi ./schema.xml 來配置 schema.xml 文件 下麵給大家展示一下我的配置
1 <?xml version="1.0"?> 2 <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> 3 <mycat:schema xmlns:mycat="http://io.mycat/"> 4 5 <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> 6 <!-- auto sharding by id (long) --> 7 <table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" /> 8 9 </schema> 10 <dataNode name="dn1" dataHost="localhost1" database="dome1" /> 11 <dataNode name="dn2" dataHost="localhost1" database="dome2" /> 12 <dataNode name="dn3" dataHost="localhost1" database="dome3" /> 13 <!--<dataNode name="dn4" dataHost="sequoiadb1" database="SAMPLE" /> 14 <dataNode name="jdbc_dn1" dataHost="jdbchost" database="db1" /> 15 <dataNode name="jdbc_dn2" dataHost="jdbchost" database="db2" /> 16 <dataNode name="jdbc_dn3" dataHost="jdbchost" database="db3" /> --> 17 <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" 18 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> 19 <heartbeat>select user()</heartbeat> 20 <!-- can have multi write hosts --> 21 <writeHost host="hostM1" url="192.168.79.133:3306" user="root" 22 password="5-*8;P=etsKz"> 23 </writeHost> 24 </dataHost> 25 </mycat:schema>
配置了三個資料庫,接下來看下 server.xml文件 vi ./server.xml
直接翻到最下麵 看一下用戶
1 <user name="root" defaultAccount="true"> 2 <property name="password">root</property> 3 <property name="schemas">TESTDB</property> 4 5 <!-- 表級 DML 許可權設置 --> 6 <!-- 7 <privileges check="false"> 8 <schema name="TESTDB" dml="0110" > 9 <table name="tb01" dml="0000"></table> 10 <table name="tb02" dml="1111"></table> 11 </schema> 12 </privileges> 13 --> 14 </user>
配置好server.xml 文件後 進入mysql 把mysql中的mysql.user表中的root 用戶的 host改為%後,重啟mysql,mycat連接後就可以操作表了
退出conf文件夾 進入bin 文件
./mycat console
當顯示
已經啟動成功
便可以使用 Mycat連接mysql Mycat 預設埠號是 8066
我使用的是 Centos:7
完畢!
謝謝大家!