一、概述 關於Mycat的原理網上有很多,這裡不再詳述,對於我來說Mycat的功能主要有如下幾種: 1.Mysql主從的讀寫分離 2.Mysql大表分片 3.其他資料庫例如Oracle,MSSQL,DB2等的讀寫分離和分片。 之所以第3點單獨列出來只是因為它不常用,而且使用的JDBC,連接Mysql ...
一、概述
關於Mycat的原理網上有很多,這裡不再詳述,對於我來說Mycat的功能主要有如下幾種:
1.Mysql主從的讀寫分離
2.Mysql大表分片
3.其他資料庫例如Oracle,MSSQL,DB2等的讀寫分離和分片。
之所以第3點單獨列出來只是因為它不常用,而且使用的JDBC,連接Mysql則是直接使用Mysql協議。
對於Mycat的分片功能,由於遇到了幾個很嚴重的BUG,同時分片帶來的一系列併發問題比較繁雜,因此測試之後放棄了,這裡只討論讀寫分離。
二、安裝配置
1.安裝JDK(要求至少JDK1.7以上)
tar -zxvf jdk-7u80-linux-x64.tar.gz
mv jdk1.7.0_80 /usr/local
vi /etc/profile
添加:
export JAVA_HOME=/usr/local/jdk1.7.0_80
export PATH=$JAVA_HOME/bin:$PATH
之後source /etc/profile生效,並用java -version檢查新的jdk版本。
2.安裝Mycat
#useradd mycat
#passwd mycat --設置密碼
#tar xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
#mv mycat/ /usr/local/
#chown -R mycat.mycat /usr/local/mycat/
#vi /usr/local/mycat/conf/wrapper.conf
wrapper.java.command=%JAVA_HOME%/bin/java
3.文件說明
如上我們將mycat安裝到了/usr/local/mycat目錄下,我們需要關註的只有2個文件夾conf和logs文件夾:
1)logs文件下只需要關註wrapper.log,這是mycat的日誌
2)conf文件下只需要關註server.xml和schema.xml,其他的大多是分片相關的,本文不討論。
三、讀寫分離配置
1)當前環境說明:
Mysql 主:mysql01 192.168.20.68
從:mysql02 192.168.20.69
Mycat安裝在192.168.20.68上,我們的目的是實現一個名叫leo的庫(也叫schema)的讀寫分離。
2)server.xml配置
關於Mycat性能調優的大多數參數都在此文件中,我們暫不關心,配置讀寫分離此文件只需要改動如下部分:
我們設置了mycat的用戶名和密碼是root和123456,此賬號密碼就是外部程式連接用的可以隨意設置,下邊的user/user只讀用戶是預設的可以刪掉,不刪的話修改下schema即可。
3)schema.xml
此文件就是用於具體配置讀寫分離的配置文件,廢話不多說直接貼出具體的配置文件截圖,其他地方無需修改。
圖中設置了1個邏輯節點node1,這個node1對應邏輯主機host1,host1配置了writehost=mysql01,readhost=mysql02,真實的資料庫連接賬號密碼leo/leo也是在這裡才出現的。
在如上的xml文件中我們只需要關註4個標簽,schema/table/dataNode/dataHost, writehost是dataHost的子標簽,readhost是writehost的子標簽。
其中schema定義了要讀寫分離的庫,最好是真實庫名。table定義了表信息,只有分片才用到因此這裡直接全部註釋。
dataNode定義了邏輯主機dataHost和庫名,這裡庫名必須是真實的。dataHost定義了邏輯主機對應的物理主機,可以有多個寫主機,每個寫host可以對應多個讀host。
writehost和readhost則包含具體的資料庫連接信息。
dbDriver表示使用mysql協議,其他資料庫選擇JDBC。至於其他參數這裡不做詳細解釋,網上很多。
4)讀寫分離測試
啟動mycat:/usr/local/mycat/bin/mycat start
連接mycat:mysql -uroot -p123456 -P8066 -h127.0.0.1
Mycat自動連到的是從庫,但是有DML操作就會轉發到主庫,此賬戶的許可權等同於你在writehost和readhost中配置的賬戶許可權。