MyCAT+MySQL搭建

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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)

若启动报错话:

wKiom1gkimjQfB_YAAAS-y5Tt2k459.png-wh_50

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

wKioL1gkisjxGGcCAAALC-w71s8603.png-wh_50

wrapper.java.command=/usr/local/jdk/bin/java

wKiom1gkiwizWZmfAABsMYNBdag274.png-wh_50

[Err] 1064 -com.alibaba.druid.sql.parser.ParserException: syntax error, expect RPAREN, actualERROR DURATION

Encountered an error running main:java.lang.ExceptionInInitializerError

wKioL1gki2Tw8C_TAAFXOMJdTR4087.png-wh_50

创建链接:

#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#写自己本机IPHOSTNAME

再次启动基本没问题:mycat简单搭建完毕:

#mycat start

# ps -ef |grep mycat

查看进程状态

#ps faux |grep mycat

端口开启(同时打开防火墙)

#netstat –ant |grep 8066

测试:

#mysql -utest -ptest –h192.168.28.71 -P8066 –DTESTDB

其中8066mycat的监听端口,其中-u-p-h分别是用户名,密码和主机,-D是连接的逻辑库

####登录的用户名和密码是mycat默认提供的,只能读模式,配置文件在vim /usr/local/mycat/conf/server.xml

wKiom1gki8jylOLpAABXtcvFvvQ890.png-wh_50

启动mycat报错信息,主要是由于没修改这个配置文件信息:

1Error: 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配置参数,默认下行的内容为2G4G,可根据本机配置情况修改为512M或者其他值

wKioL1gkjDSSOP7AAAF8xfUfpaA552.png-wh_50

# conf/server.xml   #用来定义系统相关变量

XML的格式就是各类标签

注释标签:<!—

…..

….

-->

定义服务配置范围标签:

<mycat:server xmlns:mycat=”http://org.opencloudb/”>

</mycat:server>

#system标签:

这个标签用来框定系统配置范围,用来保存几乎所有mycat需要的系统配置信息(其在代码内直接的映射类为SystemConfig )

#property:用来定义服务的具体参数

#user:用来设定一个用户的权限相关

######################自定义个前端的应用连接用户

wKiom1gkjKvBheH0AADaWsbWQ54607.png-wh_50

wKioL1gkjOORR4tWAAF7b_xCku0612.png-wh_50


#maxCon:一个读写实例链接迟的最大连接数

#minCon:一个读写实例链接迟的最小连接数,初始化连接池的大小

#balance:负载均衡类型:0代表不开启读写分离机制,只使用writeHost;1代表readOnlywriteHost分担请求模式, 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



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
关系型数据库 MySQL Java
MySQL单表膨胀优化之MyCat分库分表
MySQL单表膨胀优化之MyCat分库分表
64 0
|
4月前
|
SQL 关系型数据库 MySQL
②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?
②⑩① 【MySQL】什么是分库分表?拆分策略有什么?什么是MyCat?
56 0
|
6月前
|
消息中间件 NoSQL 关系型数据库
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
【Kubernetes部署Shardingsphere、Mycat、Mysql、Redis、中间件Rocketmq、Rabbitmq、Nacos】
127 0
|
6月前
|
关系型数据库 MySQL Java
为了把MySQL分库分表:MyCAT学明白,我花了近一个月的时间!
MySQL分库分表:MyCAT-问题描述 随着数据库存储的内容越来越多,MySQL主从复制也开始无法存储更多的数据,此时就需要切割表,把一张过大的表切割后分别存储在不同的MySQL中,以便存储更多的内容,承载更多的用户。此阶段出现的典型问题如下: (1)随着互联网的发展,数据的量级也呈指数级增长,从GB到TB再到PB。对数据的各种操作也愈加困难,传统的关系数据库已经无法满足快速查询与插入数据的需求。如何使单表数据量存储更大?甚至期望单表数据量可以“无限扩大”。 (2)MySQL本身是不支持读写分离的,MySQL只支持主从数据复制,读写功能需要重新开发,。有没有一种办法可以不用一次次重写这部
|
9月前
|
SQL 网络协议 关系型数据库
mysql主从和mycat读写分离的安装及验证
最近需要将公司的d、t、p环境的mysql集群做梳理工作,所以就促使了自己对于mysql主从以及mycat读写分离的安装做了如下总结
|
10月前
|
SQL 负载均衡 安全
MySQL-中间件mycat(三)
MySQL-中间件mycat(三)
203 0
|
10月前
|
存储 算法 中间件
MySQL-中间件mycat(二)(2)
MySQL-中间件mycat(二)
|
10月前
|
负载均衡 关系型数据库 MySQL
MySQL-中间件mycat(二)(1)
MySQL-中间件mycat(二)
|
10月前
|
存储 SQL cobar
MySQL-中间件mycat(一)
MySQL-中间件mycat(一)
328 0
|
NoSQL 关系型数据库 MySQL
MySQL中三大范式与Mycat
当数据量从GB到TB再到PB时,关系型DB已经无法满足快速查询和插入操作,NoSQL的出现暂时解决了这一危机,ta通过降低数据的安全性,减少对事务的支持
61 0