使用docker搭建Mycat环境实现Mysql读写分离
·
一、搭建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"]
如图:

三、解压获取配置文件
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
更多推荐
所有评论(0)