天天看點

MyCAT+MySQL搭建

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的格式就是各類标簽

注釋标簽:&lt;!—

…..

….

--&gt;

定義服務配置範圍标簽:

&lt;mycat:server xmlns:mycat=”http://org.opencloudb/”&gt;

&lt;/mycat:server&gt;

#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