环境准备
- 安装JDK1.8(必须JDK1.7及更高版本)
- 安装MySQL
服务安装与说明
-
下载 MyCAT 编译好的安装包,下载地址为 http://dl.mycat.io/1.6-RELEASE/ 选择 1.6-release 版本,执行如下命令:
# wget http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
-
解压缩下载包
# tar -xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /opt
-
创建 Mycat 用户设置目录权限
# useradd Mycat
# chown -R Mycat.Mycat /opt/mycat
-
修改 Mycat 用户密码
# passwd Mycat
-
目录说明:
- bin:存放了mycat 的程序,也提供了nowrap的shell脚本命令
-
conf:存放了相关配置文件
- server.xml是Mycat服务器参数调整和用户授权的配置文件
- schema.xml是逻辑库定义和表以及分片定义的配置文件
- rule.xml是分片规则的配置文件,分片规则的具体一些参数信息单独存放为文件,也在这个目录下,配置文件修改,需要重启 Mycat或者通过9066 端口reload.
- lib:主要存放mycat依赖的一些jar文件
- logs:日志存放在logs/mycat.log 中,每天一个文件,日志的配置是在conf/log4j.xml中,根据自己的需要,可以调整输出级别为debug,debug级别下,会输出更多的信息,方便排查问题
服务启动
首先需要在Linux系统的环境变量中配置 MYCAT_HOME,操作方式如下:
在系统环境变量文件中增加 MYCAT_HOME=/opt/mycat
# vi /etc/profile
执行命令,使环境变量生效。
# source /etc/profile
如果是在多台Linux系统中组建的 MyCAT集群,那需要在MyCAT Server所在的服务器上配置对其他ip和主机名的映射,配置方式如下:
# vi /etc/hosts
例如:我有4 台机器,配置如下:
IP 主机名:
192.168.100.2 sam_server_1
192.168.100.3 sam_server_2
192.168.100.4 sam_server_3
192.168.100.5 sam_server_4
编辑完后,保存文件。
经过以上两个步骤的配置,就可以到/usr/local/Mycat/bin 目录下执行:
# ./mycat start
Q&A
Q:使用MyCAT的时候会提示找不到表的错误!
A:由于部署安装 MySQL,默认不忽略表名大小写,需要手动到 /etc/my.cnf 下配置 lower_case_table_names=1 使Linux环境下MySQL忽略表名大小写
Q:启动 mycat 出现错误,异常信息 Error Caused by: io.mycat.config.util.ConfigException:SelfCheck### schema testdb refered byuser test is not exist!
A:Server.xml 不要写小写的 testdb,要写大写的TESTDB;或者是由于用户 test 的逻辑库 testdb 不存在。
Q:启动 mycat 出现错误,日志信息如下:
jvm 1 | 2018-02-11 23:58:26,213 [WARN ][$_NIOREACTOR-0-RW] can't connect to mysql server ,errmsg:Access denied for user 'drsoft'@'%' to database 'TEMPDB' MySQLConnection [id=230, lastTime=1518364706200, user=drsoft, schema=TEMPDB, old shema=TEMPDB, borrowed=false, fromSlaveDB=true, threadId=3594, charset=latin1, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=192.168.2.235, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false] (io.mycat.backend.mysql.nio.MySQLConnectionAuthenticator:MySQLConnectionAuthenticator.java:91)
A:确认用户登陆信息没有问题,那需要确认连接的数据库配置了表名大小写,需要手动到 /etc/my.cnf 下配置 lower_case_table_names=1 使Linux环境下MySQL忽略表名大小写