Mycat安裝部署
jdk-7u55-linux-i586.tar.gz
解壓包:tar –zxvf jdk-7u55-linux-i586.tar.gz
封包件:http://down.51cto.com/data/2281695
存放在/usr/local:mv jdk1.7.0_55 /usr/local/jdk
添加環境變量:
Vim /etc/profile
exportJAVA_HOME=/usr/local/jdk
exportJRE_HOME=${JAVA_HOME}/jre
exportCLASSPATH=.:${JAVA_HOME}/lib:${jre_home}/lib
exportPATH=${JAVA_HOME}/bin:$PATH
執行生效: source /etc/profile
vim /etc/environment environment
export_JAVA_OPTIONS="-Xms64m -Xmx64m -Xmn32m"
執行生效:source /etc/
檢查/usr/bin/java是否已經存在連結
#ll/usr/bin/java 若存在删除,rm –rf/usr/bin/java
添加新連結:ln –s /usr/local/jdk/bin/java /usr/bin/
測試是否OK:
# java -version
Picked up _JAVA_OPTIONS: -Xms64m -Xmx64m-Xmn32m
java version "1.7.0_55"
Java(TM) SE Runtime Environment (build1.7.0_55-b13)
Java HotSpot(TM) Client VM (build24.55-b03, mixed mode)
若啟動報錯話:
<a href="http://s4.51cto.com/wyfs02/M02/8A/0C/wKiom1gkimjQfB_YAAAS-y5Tt2k459.png-wh_500x0-wm_3-wmp_4-s_380939350.png" target="_blank"></a>
yum install glibc.i686 -y
##############JDK安裝完成。
2、安裝MyCat
添加mycat使用者,并設定密碼
#useradd mycat
#passwd mycat
下載下傳mycat建議使用1.5版本
Mycat-server-1.5.1-RELEASE-20160405120037-linux.tar.gz
解壓到/usr/local目錄下
#tar –zxvf Mycat-server-1.5.1-RELEASE-20160405120037-linux.tar.gz–C /usr/local/
定義所屬的使用者和主
Chown –R mycat.mycat /usr/local/mycat
修改配置檔案:
vim/usr/local/mycat/conf/wrapper.conf
<a href="http://s2.51cto.com/wyfs02/M01/8A/09/wKioL1gkisjxGGcCAAALC-w71s8603.png-wh_500x0-wm_3-wmp_4-s_871025955.png" target="_blank"></a>
wrapper.java.command=/usr/local/jdk/bin/java
<a href="http://s4.51cto.com/wyfs02/M00/8A/0C/wKiom1gkiwizWZmfAABsMYNBdag274.png-wh_500x0-wm_3-wmp_4-s_186114982.png" target="_blank"></a>
[Err] 1064 -com.alibaba.druid.sql.parser.ParserException: syntax error, expect RPAREN, actualERROR DURATION
Encountered an error running main:java.lang.ExceptionInInitializerError
<a href="http://s4.51cto.com/wyfs02/M02/8A/09/wKioL1gki2Tw8C_TAAFXOMJdTR4087.png-wh_500x0-wm_3-wmp_4-s_2594884.png" target="_blank"></a>
建立連結:
#ln –s /usr/local/mycat/bin/mycat /usr/bin/
啟動mycat
#mycat start
支援的參數:
mycat --help
Usage: /usr/bin/mycat { console | start |stop | restart | status | dump }
啟動過程可能有問題,主要檢視日志:/usr/local/mycat/logs/ wrapper.log,可以開啟debug功能,或者在啟動時候執行#mycatconsole檢視執行過程
添加本地解析:
# [root@data3 logs]# hostname
data3
#vim /etc/hosts#寫自己本機IP和HOSTNAME
再次啟動基本沒問題:mycat簡單搭建完畢:
# ps -ef |grep mycat
檢視程序狀态
#ps faux |grep mycat
端口開啟(同時打開防火牆)
#netstat –ant |grep 8066
測試:
#mysql -utest -ptest –h192.168.28.71 -P8066 –DTESTDB
其中8066是mycat的監聽端口,其中-u,-p,-h分别是使用者名,密碼和主機,-D是連接配接的邏輯庫
####登入的使用者名和密碼是mycat預設提供的,隻能讀模式,配置檔案在vim /usr/local/mycat/conf/server.xml
<a href="http://s5.51cto.com/wyfs02/M01/8A/0C/wKiom1gki8jylOLpAABXtcvFvvQ890.png-wh_500x0-wm_3-wmp_4-s_2597638893.png" target="_blank"></a>
啟動mycat報錯資訊,主要是由于沒修改這個配置檔案資訊:
1、Error: Could notcreate the Java Virtual Machine.
INFO | jvm 4 | 2016/05/18 01:33:03 |Error: A fatal exception has occurred. Program will exit
大概原因,就是java堆記憶體不足以運作JVM,需要增加記憶體
1、 Linux修改環境變量 vim/etc/environment
增加此行:export _JAVA_OPTIONS="-Xms64m -Xmx64m -Xmn32m"
其中的64m表示使用64M的記憶體。-Xms是堆的最小大小,-Xmx是堆的最大值,-Xmn是堆中的新生代最小值。Xmn中的值不能超過總的堆記憶體大小
知識普及:
Xmx:設定JVM最大可用記憶體
Xms:設定JVM初始化記憶體
Xmn:設定年年輕代記憶體大小,整個JVM記憶體大小=年輕代大小+年老代大小+持久化大小,持久代一般固定大小為64M,是以增的年輕代後,将會減小年老代大小,此值對系統性能影響較大,官方推選配置為整個堆的3/8
Xss:設定每個線程的堆棧大小
Source /etc/environment
1、 添加JDK的環境變量:vim /etc/profile 添加完source /etc/profile 執行生效
exoprt JAVA_HOME=/usr/local/mycat/jdk
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:$PATH
3、執行過程還報錯:
jvm 1 | WrapperSimpleApp: Encountered an error running main:java.lang.OutOfMemoryError: Direct buffer memory
jvm 1 | java.lang.OutOfMemoryError: Direct buffer memory
修改mycat的配置檔案:
Vim /usr/local/mycat/conf/ wrapper.conf
啟動前,一般需要修改JVM配置參數,預設下行的内容為2G和4G,可根據本機配置情況修改為512M或者其他值
<a href="http://s5.51cto.com/wyfs02/M01/8A/09/wKioL1gkjDSSOP7AAAF8xfUfpaA552.png-wh_500x0-wm_3-wmp_4-s_2581014553.png" target="_blank"></a>
# conf/server.xml #用來定義系統相關變量
XML的格式就是各類标簽
注釋标簽:<!—
…..
….
-->
定義服務配置範圍标簽:
<mycat:server xmlns:mycat=”http://org.opencloudb/”>
</mycat:server>
#system标簽:
這個标簽用來框定系統配置範圍,用來儲存幾乎所有mycat需要的系統配置資訊(其在代碼内直接的映射類為SystemConfig )
#property:用來定義服務的具體參數
#user:用來設定一個使用者的權限相關
######################自定義個前端的應用連接配接使用者
<a href="http://s2.51cto.com/wyfs02/M02/8A/0C/wKiom1gkjKvBheH0AADaWsbWQ54607.png-wh_500x0-wm_3-wmp_4-s_243418622.png" target="_blank"></a>
<a href="http://s5.51cto.com/wyfs02/M02/8A/09/wKioL1gkjOORR4tWAAF7b_xCku0612.png-wh_500x0-wm_3-wmp_4-s_1981895976.png" target="_blank"></a>
#maxCon:一個讀寫執行個體連結遲的最大連接配接數
#minCon:一個讀寫執行個體連結遲的最小連接配接數,初始化連接配接池的大小
#balance:負載均衡類型:0代表不開啟讀寫分離機制,隻使用writeHost;1代表readOnly與writeHost分擔請求模式, 2 代表随機配置設定讀請求和1類似; 3 代表隻由readHost來承擔讀請求
#writeType: 負載均衡類型:0 代表發到第一個writeHost,挂了後切到還生存的第二個writeHost,重新啟動後以切換後的為準,也就是不漂回;1 代表寫操作随機發送到writeHost,這樣不安全;
dbType:後端資料庫類型
#switch Type:切換類型:-1代表不切換,1代表自動切換,2代表基于主從同步狀态決定是否切換
#slave Threshold#SLAV讀的安全邊界,如果seconds_behind_master大于這個值,這台slave會被臨時剔除,以免被讀
#heartbeat:包含一個語句,用語句執行成功與否來判定資料庫的可用性
# conf/rule.xml #用來定義分片規則
定義了一個 mod-long 的分片規則,對 id 列進行分片,使用 mod-long 算法;(預設)
#####注意:
ML中定義的标簽有順序,如果不按照順序進行配置,會報錯。
比如 schema.xml 中的順序為
· 1.定義 schema
· 2.定義 dataNode
· 3.定義 dataHost
如果不按順序,會無法啟動mycat,并且 mycat.log 中會報錯
*****************到此結束,重新啟動mycat,根據之前定義好的邏輯庫庫名和表名在中間層添加。使用在配置檔案中定義的使用者名,此使用者名主要提供給前端應用使用。添加定義好的表名,若添加不存在的表報錯: optable not in schema----AA
# mysql -h192.168.28.71 -P8066 -uaaa –paaa -Dcctest
本文轉自 DBAspace 51CTO部落格,原文連結:http://blog.51cto.com/dbaspace/1871636