MyCat是目前最流行的基于Java语言编写的数据库中间件,是一个实现了MySQL协议的服务器。MyCat是基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得MyCat变得非常的强大。
1. 拉取镜像
docker pull fify/mycat
2. 创建挂载目录
mkdir -p /home/mycat
将附件中的 server.xml、schema.xml 修改并拷贝至 /home/mycat 目录下;
server.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
<system>
<!-- 1为开启实时统计、0为关闭 -->
<property name="useSqlStat">0</property>
<!-- 1为开启全加班一致性检测、0为关闭 -->
<property name="useGlobleTableCheck">0</property>
<property name="sequnceHandlerType">2</property>
<!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena-->
<property name="processorBufferPoolType">0</property>
<!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志-->
<property name="handleDistributedTransactions">0</property>
<!-- off heap for merge/order/group/limit 1开启 0关闭 -->
<property name="useOffHeapForMerge">1</property>
<!-- 单位为m -->
<property name="memoryPageSize">1m</property>
<!-- 单位为k -->
<property name="spillsFileBufferSize">1k</property>
<property name="useStreamOutput">0</property>
<!-- 单位为m -->
<property name="systemReserveMemorySize">384m</property>
</system>
<user name="root">
<property name="password">root123</property>
<property name="schemas">test</property>
</user>
</mycat:server>
schema.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>
<!-- dataNode -->
<dataNode name="dn1" dataHost="dh1" database="test" />
<dataHost name="dh1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<!-- 心跳语句 -->
<heartbeat>select user()</heartbeat>
<!-- 写实例 -->
<writeHost host="hostM1" url="192.168.40.2:3306" user="root" password="root123">
<!-- 读实例 -->
<readHost host="hostS1" url="192.168.40.3:3306" user="root" password="root123" />
<readHost host="hostS2" url="192.168.40.5:3306" user="root" password="root123" />
</writeHost>
</dataHost>
</mycat:schema>
3. 创建容器
docker run --name mycat --net=host -v /home/mycat/server.xml:/usr/local/mycat/conf/server.xml -v /home/mycat/schema.xml:/usr/local/mycat/conf/schema.xml --privileged=true -d fify/mycat
4. 防火墙
firewall-cmd --zone=public --add-port=8066/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
5. 测试连接
navicat
6. 进入容器
docker exec -i -t mycat /bin/bash
7. 查看日志
docker logs -f -t --since="2019-03-06" --tail=100 mycat