Mycat安装部署
1下载jdk: http://www.oracle.com/technetwork/java/javase/archive-139210.html,建议用7就好
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)
若启动报错话:
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
添加mycat用户,并设置密码
#useradd mycat
#passwd mycat
修改配置文件:
vim/usr/local/mycat/conf/wrapper.conf
wrapper.java.command=/usr/local/jdk/bin/java
[Err] 1064 -com.alibaba.druid.sql.parser.ParserException: syntax error, expect RPAREN, actualERROR DURATION
Encountered an error running main:java.lang.ExceptionInInitializerError
创建链接:
#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简单搭建完毕:
#mycat start
# 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
启动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
exportCLASSPATH=.:${JAVA_HOME}/lib:${jre_home}/lib
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或者其他值
# conf/server.xml #用来定义系统相关变量
XML的格式就是各类标签
注释标签:<!—
…..
….
-->
定义服务配置范围标签:
<mycat:server xmlns:mycat=”http://org.opencloudb/”>
</mycat:server>
#system标签:
这个标签用来框定系统配置范围,用来保存几乎所有mycat需要的系统配置信息(其在代码内直接的映射类为SystemConfig )
#property:用来定义服务的具体参数
#user:用来设定一个用户的权限相关
######################自定义个前端的应用连接用户
#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