一、MyCat的安裝
1、首先需配置java運行環境(略)
2、下載mycat安裝包,或者直接進行下載,網址http://dl.mycat.io/
wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
3、解壓至home/soft/mycat/文件夾下
tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz
4、配置環境變量
vim /etc/profile
並添加
export MYCAT_HOME=/home/soft/mycat/mycat
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$MYCAT_HOME/bin:$PATH
按Esc,輸入:wq保存退出
刷新環境變量—執行:source /etc/profile
5、啓動MyCat
MyCat相關操作命令:
mycat start/stop/restart
二、MyCat配置相關
1、MyCat根目錄結構
2、MyCat的主要配置文件
schema.xml中定義邏輯庫,表、分片節點等內容;
rule.xml中定義分片規則;
server.xml中定義用戶以及系統相關變量,如端口等
3、server.xml內容概述
server.xml是MyCAT對外的“虛擬數據庫”配置文件。所謂的“虛擬數據庫”是說,MyCAT將多個Mysql集羣整合起來對外提供服務,提供服務的接口仍然採用Mysql的形式,因此,通過仿造Mysql接口,讓調用程序以爲自己是在訪問Mysql數據庫,就是所謂的“虛擬數據庫”。
表明該虛擬數據庫有一個schema,TESTDB;
有2個用戶test和user,密碼分別是test和user,
user用戶是隻讀的,test用戶未設置只讀;
默認的SQL解析器是druidparser
4、schema.xml內容概述
Schema中主要配置 Mycat 數據庫,MySQL表,分片規則,分片類型
第1塊是schema塊,主要描述了虛擬數據庫的schema TESTDB中有哪些表,每個表分佈在哪些數據節點上,分佈的方法採用哪種算法。
例如<table name="travelrecord"
dataNode="dn1,dn2,dn3"rule="auto-sharding-long"/>,表示travelrecord表分佈在dn1,dn2,dn3這3個節點上,分佈的方法採用auto-sharding-long算法。
第2塊是dataNode,表示該數據庫有哪些數據節點,以及這些數據節點實際對應的數據服務器和數據庫名,這裏配置了3個節點dn1,dn2,dn3,都是在localhost1服務器上,數據庫名分別是db1,db2,db3,其實,這也正是前面schema塊中用到的。
第3塊是dataHost,這部分是實際的數據庫服務器配置,這裏配置了2個Mysql數據庫,hostM1和hostS1,地址分別在“localhost:3306”,用戶名都是root,密碼是123456,並且指定了心跳是select user()。
需注意:
balance和 switchType兩個參數:
balance指的負載均衡類型,目前的取值有4種:
balance="0", 不開啓讀寫分離機制,所有讀操作都發送到當前可用的writeHost上。
balance="1",全部的readHost與stand by writeHost參與select語句的負載均衡,
簡單的說,當雙主雙從模式(M1->S1,M2->S2,並且M1與 M2互爲主備),正常情況下,M2,S1,S2都參與select語句的負載均衡。
balance="2",所有讀操作都隨機的在writeHost、readhost上分發。
balance="3",所有讀請求隨機的分發到wiriterHost對應的readhost執行,writerHost不負擔讀壓力
switchType指的是切換的模式,目前的取值也有4種:
switchType='-1' 表示不自動切換
switchType='1' 默認值,表示自動切換
switchType='2' 基於MySQL主從同步的狀態決定是否切換,心跳語句爲 show slave status
switchType='3'基於MySQL galary cluster的切換機制(適合集羣)(1.4.1),心跳語句爲 show status like 'wsrep%'。
5、rule.xml內容概述
sharding-by-hour 對應的切分方式(function )是按日期切分。
tableRule中name 爲schema.xml 中table 標籤中對應的rule。
columns 是表的切分字段: createTime 創建日期。
algorithm 是規則對應的切分規則:映射到function 的name
function 配置是分片規則的配置。
name 爲切分規則的名稱,但是需要與tableRule 中匹配。
class 是切分規則對應的切分類,需要哪種規則則配置哪種,
例如本例子是按小時分片:org.opencloudb.route.function.LatestMonthPartion
property 標籤是切分規則對應的不同屬性,不同的切分規則配置不同。
三、安裝中遇到的問題
1、MyCat 默認數據端口是8066
登陸如下:mysql -h127.0.0.1 -utest -ptest –P8066 [-dmycat]
2、在配置好數據庫後連接遠程通過Navicat for MySQL連接MyCat提示:
“1184-Unknown charsetIndex:255”
處理方式:
找到配置文件夾下:index_to_charset.properties 文件,在文件末尾加上“255=utf8mb4”即可。