docker安装MyCat,配置MySQL集群读写分离

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 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容