一、搭建Mycat环境

创建目录并下载安装包

mkdir -p /opt/docker/mycat
cd  /opt/docker/mycat
wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

二、在mycat目录下编写Dockerfile

FROM java:8
USER root
COPY Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz /
RUN tar -zxf /Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
ENV MYCAT_HOME=/mycat
ENV PATH=$PATH:${MYCAT_HOME}/bin
WORKDIR $MYCAT_HOME/bin
RUN chmod u+x ./mycat
EXPOSE 8066 9066
CMD ["./mycat", "console"]

如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210406222835420.png

三、解压获取配置文件

tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz 
mv mycat/conf/ conf

目录结构:
在这里插入图片描述

四、修改mycat配置文件

真正需要修改的只有三个文件,具体官方文档写的很详细;
(1):schema.xml ,(2):server.xml,(3):rule.xml;
现在搭建的是Mysql读写分离,修改schema.xml、server.xm即可。rule.xml用于分表分库配置文件。

(1)schema.xml文件代码:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
   <schema name="mycat" checkSQLschema="false" sqlMaxLimit="100">
        <table name="user" primaryKey="ID" dataNode="dn1,dn2"  />
    </schema>

    <dataNode name="dn1" dataHost="localhost1" database="demo2" />
    <dataNode name="dn2" dataHost="localhost1" database="demo3" />

    <dataHost name="localhost1" 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.16.149:3301" user="root" password="root">
	            <readHost host="hostM1" url="192.168.16.149:3302" user="root" password="root"> 
	        	</readHost>
            </writeHost>
    </dataHost>

</mycat:schema>

(2):server.xm文件代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
      <!-- 读写都可用的用户 -->
    <user name="root" defaultAccount="true">
        <property name="password">root</property>
        <property name="schemas">mycat</property>

        <!-- 表级 DML 权限设置 -->
        <!--        
        <privileges check="false">
            <schema name="TESTDB" dml="0110" >
                <table name="tb01" dml="0000"></table>
                <table name="tb02" dml="1111"></table>
            </schema>
        </privileges>       
         -->
    </user>

    <!-- 只读用户 -->
    <user name="user">
        <property name="password">user</property>
        <property name="schemas">mycat</property>
        <property name="readOnly">true</property>
    </user>

</mycat:server>

五、执行Dockerfile生成镜像并运行

1、构建

cd /opt/docker/mycat
docker build -t mycat:1.6 . 

2、编写mycat启动脚本($PWD表示当前目录)

docker run -d  -p:8066:8066 --name mysql-mycat --net docker-network --ip 192.168.16.149 -p 9066:9066 -v $PWD/logs:/mycat/logs -v $PWD/conf:/mycat/conf mycat:1.6

效果如下:
在这里插入图片描述
3、有时候 docker run 启动容器失败,需要删除以下自动生成的logs文件夹,再重新docker run
在这里插入图片描述
4、使用 docker logs mysql-mycat 查看报错原因

docker logs mysql-mycat
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐