docker 部署mycat 设置mysql主从
docker mysql部署参考《docker部署主从》
mycat Dockerfile参考 docker启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | FROM docker.io /adoptopenjdk/openjdk8 :latest ENV AUTO_RUN_DIR . /mycat2 ENV DEPENDENCE_FILE mycat2-1.21-release-jar-with-dependencies.jar ENV TEMPLATE_FILE mycat2- install -template-1.21.zip RUN sed -i "s@http://.*archive.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources .list RUN sed -i "s@http://.*security.ubuntu.com@http://mirrors.aliyun.com@g" /etc/apt/sources .list RUN buildDeps= 'procps wget unzip' \ && apt-get update \ && apt-get install -y $buildDeps RUN wget -P $AUTO_RUN_DIR/ http: //dl .mycat.org.cn /2 .0 /1 .21-release/$DEPENDENCE_FILE \ && wget -P $AUTO_RUN_DIR/ http: //dl .mycat.org.cn /2 .0 /install-template/ $TEMPLATE_FILE RUN cd $AUTO_RUN_DIR/ \ && unzip $TEMPLATE_FILE \ && ls -al . \ && mv $DEPENDENCE_FILE mycat /lib/ \ && chmod +x mycat /bin/ * \ && chmod 755 mycat /lib/ * \ && mv mycat /usr/local #copy mycat /usr/local/mycat/ VOLUME /usr/local/mycat/conf VOLUME /usr/local/mycat/logs EXPOSE 8066 1984 CMD [ "/usr/local/mycat/bin/mycat" , "console" ] |
启动
1 | docker run -d -it -p 8066:8066 -p 1984:1984 <br>--name mycat <br>- v /data/mycat2/conf : /usr/local/mycat/conf <br>- v /data/mycat2/logs : /usr/local/mycat/logs <br>mycat.org.cn /mycat2 :20220706 |
进入主数据库创建mycat用户,用户mycat2数据源连接
1 2 3 | CREATE USER 'mycat' @ '%' IDENTIFIED BY '123456' ; GRANT ALL PRIVILEGES ON *.* to 'mycat' @ '%' ; FLUSH PRIVILEGES; |
配置文件mycat2文件下如果为空,可下载解压之后conf文件全部到该文件下,参考《安装mycat2》
因为mycat是通过docker部署 尝试用《通过注释配置》发现物理机上面没有生成相应的文件,所以本文档为以下配置
端口 | 服务 |
8066 | mycat |
3307 | mysql主 |
3308 | mysql从 |
mycat 主从配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | # m、s为自定义name,m-master、s-slave <br>cd /data/mycat2/conf/datasources cp prototypeDs.datasource.json m.datasource.json vim m.datasource.json { "dbType" : "mysql" , "idleTimeout" :60000, "initSqls" :[], "initSqlsGetConnection" : true , "instanceType" : "READ_WRITE" , "maxCon" :1000, "maxConnectTimeout" :3000, "maxRetryCount" :5, "minCon" :1, "name" : "m" , "password" : "123456" , "type" : "JDBC" , "url" : "jdbc:mysql://192.168.153.15:3307?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8" , "user" : "mycat" , "weight" :0 } cp prototypeDs.datasource.json s.datasource.json vim s.datasource.json { "dbType" : "mysql" , "idleTimeout" :60000, "initSqls" :[], "initSqlsGetConnection" : true , "instanceType" : "READ_WRITE" , "maxCon" :1000, "maxConnectTimeout" :3000, "maxRetryCount" :5, "minCon" :1, "name" : "m" , "password" : "123456" , "type" : "JDBC" , "url" : "jdbc:mysql://192.168.153.15:3307?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8" , "user" : "mycat" , "weight" :0 } cd /data/mycat2/conf/clusters cp prototype.cluster.json master-slave.cluster.json vim master-slave.cluster.json { "clusterType" : "MASTER_SLAVE" , "heartbeat" :{ "heartbeatTimeout" :1000, "maxRetry" :3, "minSwitchTimeInterval" :300, "slaveThreshold" :0 }, "masters" :[ "m" # 主节点 ], "maxCon" :200, "name" : "master-slave" , # 主从名称 "readBalanceType" : "BALANCE_ALL" , "replicas" :[ "s" // 从节点 ], "switchType" : "SWITCH" } cd /data/mycat2/conf/schemas cp mysql.schema.json mydb1.schema.json vim mydb1.schema.json { "customTables" :{}, "globalTables" :{}, "normalProcedures" :{}, "normalTables" :{}, "schemaName" : "mydb1" , # 物理库 "targetName" : "master-slave" , # 集群配置 /data/mycat2/conf/clusters/master-slave.cluster.json中的name "shardingTables" :{}, "views" :{} } |
1 2 | # 重启容器 docker restart mycat |
测试:
注:当前环境主从的binlog同步方式为statement所以可以识别@@hostname变量,连接mycat插入 insert into user(name,hostname) value ('张三',@@hostname);
主库为:
从库数据为
连接mycat查询,查询到的数据如图,如是从库的数据就是从从库查询的,反之则是主库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异