Mycat是使用 JAVA 语言进行编写开发,使用前需要先安装 JAVA 运行环境(JRE),由于 MyCAT 中使用了JDK7 中的一些特性,所以要求必须在 JDK7 以上的版本上运行。
Mycat支持多种数据库接入,如:MySQL、SQLServer、Oracle、MongoDB 等,推荐使用MySQL 做集群。
1. 创建Mycat配置文件夹
mkdir /usr/local/mycat mkdir /usr/local/mycat/conf
2. 创建docker文件夹
mkdir /usr/local/docker/mycat/ cd /usr/local/docker/mycat
3. 下载mycat安装包
wget https://github.com/MyCATApache/Mycat-download/blob/master/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz mv Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz mycat.tar.gz
4. 解压并复制文件
tar -zxvf mycat.tar.gz cp -r mycat/conf/ /usr/local/mycat
5. 创建Dockerfile文件
#基于openjdk:8 创建镜像,
#如果是基于centos或其他的,必须保证已安装了JDK,否则就需要在Dockerfile文件中也ADD进来
FROM openjdk:8
#将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
#将mycat解压到/usr/local目录中,得到 /usr/local/mycat
ADD mycat.tar.gz /usr/local
#容器数据卷,用于数据保存和持久化工作
#将mycat的配置文件的地址暴露出映射地址,启动时直接映射宿主机的文件夹
VOLUME /usr/local/mycat
WORKDIR /usr/local/mycat
#用来在构建镜像过程中设置环境变量
ENV MYCAT_HOME=/usr/local/mycat
#暴露出MyCat的所需端口
EXPOSE 8066 9066
#以前台进程的方式启动MyCat服务
CMD ["/usr/local/mycat/bin/mycat", "console","&"]
6. 构建镜像
# 注意最后还有 . docker build -t mycat-1.6.6.1 .
7. 启动容器
#容器券:-v /usr/local/mycat/conf/:/usr/local/mycat/conf/
#冒号前是本机路径,冒号后是容器内的目录路径
#创建多个容器卷,尤其是配置文件和日志
docker run --name mycat -p 8066:8066 -p 9066:9066 -v /usr/local/mycat/conf/:/usr/local/mycat/conf/ -v /usr/local/mycat/logs/:/usr/local/mycat/logs/ -d mycat-1.6.6.1
注:为了确定容器券设置是否有效,可以在本机的目录下改下配置文件,进入容器内查看文件是否改变,如果一致,则设置成功。
防火墙设置,需要开放mycat的连接端口8066和管理端口9066。
8. 进入容器和退出容器
# 进入容器 docker exec -it 1b652326460e /bin/bash # 两种退出方式 # 第一种:容器停止退出,在容器终端输入exit # 第二种:容器不停止退出,在容器终端按Ctrl+P+Q
9. 配置
编辑/usr/local/mycat/conf/目录下的server.xml,schema.xml等配置文件。
schema.xml的配置如下:
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="user" primaryKey="ID" autoIncrement="true" dataNode="dn1" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="mydb" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="111.111.111.111:1111" user="root"
password="123456" />
</dataHost>
</mycat:schema>