容聯技術乾貨分享:MyCat讀寫分離應用
一、Mycat安裝準備
MyCat是一個的資料庫中間件,基於阿里開源的cobar產品而研發,由幾個有志之士的牛人共同完成並開源。提供高可用性數據分片集群,自動故障切換,高可用性 ,支持讀寫分離,支持Mysql雙主多從,以及一主多從的模式 ,支持全局表,數據自動分片到多個節點,用於高效表關聯查詢 ,支持獨有的基於E-R 關係的分片策略,實現了高效的表關聯查詢多平台支持,部署和實施簡單。
目前結合公司業務需求針對馬上消費項目數據的安全,避免不必要的誤操作,同時也便於歷史操作的追溯特意搭建一套mycat讀寫分離環境。具體更多學習請查考MyCat官方權威指南。
1.1 安裝java
因Mycat是用java開發的,所以需要在實驗環境下安裝java,官方建議jdk1.7及以上版本 安裝完畢檢驗是否成功
1.2安裝MyCat
解壓MyCAT文件
tar xvf Mycat-server-1.5.1-RELEASE-20161124120459-linux.tar.gz
進入mycat目錄看到下面(提示:logs文件下面的mycat.log記錄用戶所有操作資料庫的操作)
二、配置文件和熟悉概念
2.1 用戶
用戶相關配置位於conf/server.xml中,server.xml包含了整個Mycat Server的配置情況,這裡只截取針對性的內容來看下
<user name="rw_liudh">
<property name="password">XXXXXXXXXX</property>
<property name="schemas">enterprise,newfs,newfs2,cdr</property>
</user>
上述配置定義了連接Mycat Server的用戶名和密碼,以及能夠訪問的schema(schema下面再講解),如果是只讀用戶可以加上readOnly屬性為true。
2.2 邏輯庫(schema)
schema的概念和Mysql中的DataBase概念是一樣的,這樣就容易理解了。其相關配置位於conf/schema.xml中,user標籤中的schemas屬性指向的就是schema標籤的name屬性。下面看下schema標籤的內容:
<schema name="enterprise" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"> </schema>
schema標籤屬性
1.name:schema的名稱相當於資料庫的名稱
2.dataNode:schema所在的分片,其實就是物理資料庫。
2.3 分片節點(dataNode)
dataNode定義了Mycat中的數據節點,也就是通常說的數據分片,其實就是指向了具體的資料庫地址和名稱。
dataNode標籤和schema同級,依然修改conf/schema.xml
<dataNode name="dn1" dataHost="dn1_host" database="enterprise" />
dataNode標籤屬性
1.name:分片名稱,全局唯一
2.dataHost:資料庫實例地址,對應dataHost標籤的name屬性(下面講解)
3.dataBase:對應資料庫實例上的具體資料庫,要預先建好
2.4 節點主機(dataHost)
dataHost標籤定義了具體的資料庫實例、讀寫分離配置和心跳語句。
dataHost標籤和schema同級,依然修改conf/schema.xml。
<dataHostname="dn1_host"maxCon="1000"minCon="10"balance="0"
writeType="0"dbType="mysql"dbDriver="native"switchType="1">
<heartbeat>select user()</heartbeat>
<writeHosthost="hostM1"url="localhost:3306"user="root"password="123456"> (所有的mycat讀寫賬戶都走 mysql的root許可權)
<readHost host="hostS1"url="localhost:3306" user="ro_maxiao" password="123456" >(該地方為只讀指向地址,user為只讀許可權用戶)
</writeHost>
</dataHost>
dataHost標籤屬性
1.name:節點主機名稱
2.maxCon:指定每個讀寫實例連接池的最大連接
3.minCon:指定每實例連接池的最小連接,初始化連接池的大小
三、啟動mycat驗證讀寫
所有配置完畢後,啟動mycat
查看運行狀態
[yun@10-9-18-18 bin]$ ./mycat status
Mycat-server is running (13957). (運行正常)
驗證讀寫用戶
/conf/server.xml文件中 剛開始配置了
<user name="rw_liudh">
<property name="password">XXXXXXXXXX</property>
<property name="schemas">enterprise,newfs,newfs2,cdr</property>
</user>
我們利用工具登陸驗證
驗證只讀用戶
/conf/server.xml文件中
<property name="readOnly">true</property>(只讀需要添加該語法) 驗證
容聯技術乾貨推薦>>>
技術乾貨 | PushKit和CallKit實現——基於實時語音通話技術乾貨 | HTML5之簡單的音視頻應用開發探尋
技術乾貨 | H.264 SVC技術介紹及應用分析
技術乾貨丨ELK日誌系統部署與優化
推薦閱讀:
※手機快閃記憶體和固態硬碟為什麼擦除多了會損壞?
※今天開始你的技術生涯:40 個在線學習編程的工具
※懂得自我,比什麼技術都重要
※超級計算機排名之中的地區和架構之爭
※【原創】見微知著看技術誤解?--從裸光纖和NTPD談起