mycat目前稳定版本是1.6.7.x版本,本文选择了1.6.7.6。
mycat安装前必须已经部署好数据库集群。
该文章为单库分表示例
#新建目录mkdir /root/data/mycat#切换目录cd /root/data/mycat#下载mycat release1.6.7.6到当前目录wget http://dl.mycat.org.cn/1.6.7.6/20201126013625/Mycat-server-1.6.7.6-release-20201126013625-linux.tar.gzmv Mycat-server-1.6.7.6-release-20201126013625-linux.tar.gz mycat1.6.7.6.tar.gz#解压conf目录到当前目录,因为使用docker直接挂载conf目录会报错,mycat启动时需要依赖conf目录中的文件。tar -zxvf mycat1.6.7.6.tar.gz -C /root/data/ mycat/conf
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:server SYSTEM "server.dtd"><server xmlns:mycat="http://io.mycat/"><system>参考:https://github.com/AlphaYu/Adnc/blob/master/doc/mycat/server.xml</system><!-- mycat的用户名,密码,schema.xml 逻辑库名称 --><user name="root" defaultAccount="true"><property name="password">88888888</property><property name="schemas">adnc_clear_data</property></user></server>
<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/"><!-- 配置1个逻辑库--><schema name="adnc_clear_data" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn_clear_data"><!-- 配置分表规则,s_tt分成5个表,分表规则可以看 rule.xml,这里配置的数量与规则一致 --><table name="s_tt" primaryKey="id" autoIncrement="false" dataNode="dn_clear_data" subTables="s_tt$1-5" rule="mod-long"/></schema><!-- 逻辑库对应的真实数据库--><dataNode name="dn_clear_data" dataHost="dh_clear_data" database="clear_data" /><!--真实数据库所在的服务器地址,这里配置了1主 --><dataHost name="dh_clear_data" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="172.16.10.234:3306" user="root" password="88888888" /></dataHost></mycat:schema>
<!-- 规则 --><tableRule name="mod-long"><rule><columns>id</columns><algorithm>mod-long</algorithm></rule></tableRule><!-- 规则对应的配置计算类及参数 --><function name="mod-long" class="io.mycat.route.function.PartitionByMod"><!-- how many data nodes,可调整分表数量 --><property name="count">5</property></function>
<!-- 表名全大写 = 对应的节点库名称 -->S_TT=dn_clear_data
由于mycat官方并没有提供docker镜像,我们需要自己编写dockerfile文件打包镜像。
#下载dockerfile文件到当前目录wget https://raw.githubusercontent.com/AlphaYu/Adnc/master/doc/mycat/Dockerfile#如果下载失败,请手动下载并上传到/root/data/mycat目录,文件地址如下#https://github.com/AlphaYu/Adnc/blob/master/doc/mycat/Dockerfile
#创建镜像文件docker build -t mycat:1.6.7.6 .#运行容器并挂载配置文件目录与日志目录#-v /root/data/mycat/conf:/usr/local/mycat/conf 挂载配置文件目录#-v /root/data/mycat/logs:/usr/local/mycat/logs 挂载日志目录#带自建网络启动方式docker run --privileged=true -p 8066:8066 -p 9066:9066 --name mycat -v /root/data/mycat/conf:/usr/local/mycat/conf -v /root/data/mycat/logs:/usr/local/mycat/logs --network=adnc_net --ip 172.20.0.16 -d mycat:1.6.7.6# --network=adnc_net adnc_net是自建的bridge网络,如果使用docker默认网络,不需要这段docker run --privileged=true -p 8066:8066 -p 9066:9066 --name mycat -v /root/data/mycat/conf:/usr/local/mycat/conf -v /root/data/mycat/logs:/usr/local/mycat/logs --ip 172.16.10.234 -d mycat:1.6.7.6
# 登录mycat,172.16.10.234 是指mycat容器的Ip地址,如果容器没有指定固定Ip,你的可能不一样,请注意。#链接mycat的账号密码(server.xml中设置的)也可以使用Navicat链接mysql -uroot -p88888888 -P8066 -h172.16.10.75# 显示所有数据库show databases;#显示的是配置是schema.xml中逻辑库的名称 adnc_clear_data
GitHub引用地址 [1.]docker安装Mycat
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号