安装与配置mycat

部署mycat

软件

JDK 官方下载
mycat 官方下载

安装jdk

1
2
3
/usr/local/
tar zxvf jdk-8u20-linux-x64.tar.gz
vi /etc/profile
1
2
3
export JAVA_HOME=/usr/local/jdk1.8.0_20
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
1
2
source /etc/profile
java —version

安装mycat

1
2
3
4
5
zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
groupadd mycat
adduser -r -g mycat mycat
chown -R mycat.mycat /usr/local/mycat
cd mycat/bin

防火墙

1
vi /etc/sysconfig/iptables
1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8066 -j ACCEPT
1
service iptables restart

配置

编辑/etc/hosts,为当前主机名分配ip,不然会提示错误,启动错误信息在log/wapper.log

编辑配置文件,完成后启动mycat
参考如下配置,未做分库分表,仅添加主从读写分离和故障转移,mysql应先做好主从配置。

  • schema.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    <!--逻辑数据库名,连接mycat显示的数据库,dataNode和下面dataNode的name对应-->
    <schema name="逻辑数据库名" checkSQLschema="false" sqlMaxLimit="100" dataNode="dataNode"></schema>
    <!--数据节点与下面的数据库对应-->
    <dataNode name="dataNode" dataHost="dtHost" database="实际数据库名" />
    <dataHost name="dtHost" maxCon="1000" minCon="20" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
    <!--心跳检测 -->
    <heartbeat>show slave status</heartbeat>
    <!--配置后台数据库的IP地址和端口号,还有账号密码 -->
    <writeHost host="hostM1" url="host:port" user="user" password="password">
    <readHost host="hostR1" url="host:port" user="user" password="password" />
    </writeHost>
    <writeHost host="hostS1" url="host:port" user="user" password="password" />
    </dataHost>
    </mycat:schema>
  • server.xml 为mycat对外的权限配置,详细配置参考官方文档,下面主要配置了用户名密码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://io.mycat/">
    <system>
    <property name="useSqlStat">0</property> <!-- 1为开启实时统计、0为关闭 -->
    <property name="useGlobleTableCheck">0</property> <!-- 1为开启全加班一致性检测、0为关闭 -->
    <property name="sequnceHandlerType">2</property>
    <property name="processorBufferPoolType">0</property>
    <property name="handleDistributedTransactions">0</property>
    <property name="useOffHeapForMerge">1</property>
    <property name="memoryPageSize">1m</property>
    <property name="spillsFileBufferSize">1k</property>
    <property name="useStreamOutput">0</property>
    <property name="useZKSwitch">true</property>
    </system>
    <user name="root">
    <property name="password">password</property>
    <property name="schemas">table</property>
    </user>
    <user name="user">
    <property name="password">password</property>
    <property name="schemas">table</property>
    <property name="readOnly">true</property>
    </user>
    </mycat:server>

若配置完成后mycat.log一直提示主从同步错误,参考github该issue
https://github.com/MyCATApache/Mycat-Server/issues/1489

心跳设置了show slave status,mycat会检查34服务器的slave信息。看conf目录下的dnindex.properties,如果在测试环境下全部置为0,重启。生成环境就备份,重复上述操作。

调试

调整conf/log4j2.xml中的level为debug,运行数据库时可在log/mycat.log中查看更多mycat运作信息