22 Sep 2016
mycat:192.168.110.128
wget http://download.oracle.com/otn-pub/java/jdk/8u102-b14/server-jre-8u102-linux-x64.tar.gz?AuthParam=1474528150_d01d99688bc1767305a1d288111bec92 tar zxf server-jre-8u102-linux-x64.tar.gz mv jdk1.8.0_102/ /usr/local ln -s /usr/local/jdk1.8.0_102 /usr/local/jdk vi /etc/profile.d/java-env.sh ********************* JAVA_HOME=/usr/local/jdk JRE_HOME=${JAVA_HOME}/jre PATH=$PATH:${JAVA_HOME}/bin:${JRE_HOME}/bin CLASSPATH=${JAVA_HOME}/lib:${JRE_HOME}/lib ********************* source /etc/profile.d/java-env.sh # 检查Java环境 Java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode) echo $JAVA_HOME /usr/local/jdk
# 下载并解压mycat wget https://raw.githubusercontent.com/MyCATApache/Mycat-download/master/1.5-RELEASE/Mycat-server-1.5.1-RELEASE-20160816173057-linux.tar.gz tar zxf Mycat-server-1.5.1-RELEASE-20160816173057-linux.tar.gz # 准备mycat用户 groupadd dba useradd -g dba mycat passwd mycat mkdir /home/mycat/app mv mycat /home/mycat/app chown -R mycat:dba /home/mycat/app # 设置环境变量 vi /home/mycat/.bash_profile ***************************** # 在文件的最后添加 export MYCAT_HOME=/home/mycat/app/mycat export PATH=$PATH:$MYCAT_HOME/bin ***************************** source /home/mycat/.bash_profile # 检查环境变量 echo $MYCAT_HOME /home/mycat/app/mycat
mysql配置修改,需要在mysql的主机上修改mysql不区分大小写
vi /etc/my.cnf **************************** lower_case_table_names = 1 **************************** service mysqld restart
mysql节点对mycat主机进行访问授权
# on master01 & master02 MySQL [(none)]> grant all on *.* to 'root'@'192.168.110.%' identified by '123456'; MySQL [(none)]> flush privileges;
若不对mycat主机授权,会出现ERROR 3009或1184,大意是无法从mycat连接其他数据节点
server.xml,主要包含了mycat的系统配置
<user name="test"> <property name="password">test</property> <property name="schemas">example</property> </user> <user name="user"> <property name="password">user</property> <property name="schemas">example</property> <property name="readOnly">true</property> </user>
上面配置了test和user两个用户,指定schema的同时,配置了test可读写,而user只读
schema.xml,包含了MyCat的逻辑库、表、分片规则、DataNode以及DataSource
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/" > <schema name="example" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema> <dataNode name="dn1" dataHost="localhost1" database="test" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="-1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.110.129:3306" user="root" password="123456"> <readHost host="hostS2" url="192.168.110.130:3306" user="root" password="123456" /> </writeHost> <!--<writeHost host="hostS1" url="localhost:3316" user="root"--> <!--password="123456" />--> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost> </mycat:schema>
具体配置详情可见mycat站点文档 重点配置介绍
cd /home/mycat/app/mycat/bin chmod u+x mycat # 方法1 nohup sh mycat console & # 方法2 mycat install mycat start # 检查启动情况 netstat -lnpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 999/sshd tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 5891/java tcp 0 0 :::22 :::* LISTEN 999/sshd tcp 0 0 :::1984 :::* LISTEN 5891/java tcp 0 0 :::8066 :::* LISTEN 5891/java tcp 0 0 :::39683 :::* LISTEN 5891/java tcp 0 0 :::57509 :::* LISTEN 5891/java tcp 0 0 :::9066 :::* LISTEN 5891/java
# 安装mysql客户端 yum install mysql -y # 使用test测试读写功能 mysql -u test -p -P 8066 -h127.0.0.1 ``` sql MySQL [(none)]> use example Database changed MySQL [example]> create table persons ( age int(2), name varchar(10) ); Query OK, 0 rows affected (0.05 sec) # 使用user测试只读 MySQL [(none)]> use example Database changed MySQL [example]> show tables; +----------------+ | Tables_in_test | +----------------+ | persons | +----------------+ 1 row in set (0.00 sec) MySQL [example]> create table persons2 ( age int(2), name varchar(10) ); ERROR 1495 (HY000): User readonly