容聯技術乾貨分享:MyCat讀寫分離應用

容聯技術乾貨分享: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談起

TAG:計算機技術 | 雲通訊平台 | MyCat |