1.部署环境
1下载JDK
官网下载
2.解压文件
[root@mycat ~]# tar -xf jdk-8u181-linux-x64.tar.gz -C /usr/
3.配置环境变量
方法1
[root@mycat ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使环境变量生效
[root@mycat ~]# source /etc/profile.d/java.sh
方法2
[root@mycat ~]# vim /etc/profile
在最后一行插入下行文字
export PATH=/usr/jdk/bin:$PATH
source 一下文件让环境变量生效 有返回版本信息说明成功了
[root@mycat ~]# source /etc/profile
[root@mycat ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
部署mycat
[root@mycat ~]# tar xf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz -C /usr/local/
配置Mycat
[root@mycat ~]# cd /usr/local/mycat/bin/
[root@mycat bin]# ./mycat start
##jps 查看状态 或者./mycat status 查看
Mycat-server is running (7362).
[root@mycat bin]# jps
7364 WrapperSimpleApp
7530 Jps
[root@mycat bin]# ./mycat status
Mycat-server is running (7362).
认识配置文件
MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:
/usr/local/mycat/conf/server.xml 定义用户以及系统相关变量,如端口等。其中用户信息是前端应用程序连接 mycat 的用户信息。
/usr/local/mycat/conf/schema.xml 定义逻辑库,表、分片节点等内容。
配置 server.xml
[root@mycat ~]#cd /usr/local/mycat/conf
root@mycat conf]# vim server.xml
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<user name="root" defaultAccount="true"> ##root 授权用户
<property name="password">123456</property> ##password 密码
<property name="schemas">TESTDB</property> ##授权mycat访问的库TESTDB
</user>
</mycat:server>
上面的配置中,假如配置了用户访问的逻辑库,那么必须在 schema.xml 文件中也配置这个逻辑库,否则报错,启动 mycat 失败
配置schema.xml
需要再4个数据库都 创建mycat 用户 并授权
、[root@mycat conf]# vim schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false"sqlMaxLimit="100" dataNode="dn1">
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="master1:3306" user="mycat"
password="Qq111111.">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="slave1:3306" user="mycat" password="Qq111111." />
</writeHost>
<writeHost host="hostM2" url="master2:3306" user="mycat"
password="Qq111111." >
<readHost host="hostS2" url="slave2:3306" user="mycat" password="Qq111111." />
</writeHost>
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
balance 属性
负载均衡类型,目前的取值有 3 种:
1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。
2. balance="1", 全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2
互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。
4. balance="2", 所有读操作都随机的在 writeHost、readhost 上分发。
5. balance="3", 所有读请求随机的分发到 writerHost 对应的 readhost 执行,writerHost 不负担读压力,注意 balance=3 只在 1.4 及其以后版本有,1.3 没有。
writeType 属性
负载均衡类型
1. writeType="0", 所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准.
2. writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废
启动mycat
[root@mycat ~]# /usr/local/mycat/bin/mycat start
支持以下参数
start | restart |stop | status
在真实的 master 数据库上给用户授权
mysql> grant all on testdb.* to root@'%' identified by 'Syf_123456';
mysql> flush privileges;
测试
在 mycat 的机器上测试用户权限有效性
测试是否能正常登录上 主服务器
[root@mysqlclient ~]# mysql -uroot -pSyf_123456 -h192.168.62.151 -P 8066 TESTDB
-u 用户 -p 密码 -h 主库ip -P java端口 TESTDB 授权的虚拟库
show tables;