告别部署焦虑:用Docker Compose一键搞定Mycat2开发测试环境
云原生时代的Mycat2开发环境:Docker Compose全栈解决方案
在分布式数据库中间件领域,Mycat2以其轻量级和高性能的特点成为众多企业的选择。但传统部署方式往往需要手动配置服务器环境、处理依赖关系,这不仅耗时耗力,还会造成环境不一致的问题。本文将展示如何利用Docker Compose技术,在 三分钟内 搭建完整的Mycat2开发测试环境,实现真正的"一次配置,随处运行"。
1. 为什么选择容器化部署Mycat2
传统Mycat2部署需要经历下载安装包、配置Java环境、修改多个配置文件等繁琐步骤。而容器化方案带来三大革命性优势:
- 环境隔离 :每个组件运行在独立容器中,避免端口冲突和依赖污染
- 快速重置 :测试完成后可瞬间销毁整个环境,不留任何痕迹
-
配置即代码
:
docker-compose.yml文件可纳入版本控制,实现环境版本管理
以下是对比传统部署与容器化方案的关键指标:
| 维度 | 传统部署 | Docker Compose方案 |
|---|---|---|
| 准备时间 | 30分钟以上 | 3分钟 |
| 环境一致性 | 依赖系统环境 | 完全一致 |
| 资源占用 | 需独占端口和进程 | 按需启停 |
| 迁移成本 | 需重新配置 | 复制文件即可 |
2. 环境搭建全流程
2.1 准备工作
确保系统已安装:
- Docker 20.10+
- Docker Compose 2.0+
- 至少4GB可用内存
提示:Windows/macOS用户建议使用Docker Desktop,Linux用户可通过官方脚本安装
2.2 编写docker-compose.yml
创建项目目录并新建
docker-compose.yml
文件:
version: '3.8'
services:
mysql-primary:
image: mysql:8.0
container_name: mysql_primary
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: mycat_test
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 5s
timeout: 10s
retries: 5
mycat2:
image: mycatio/mycat2:1.21-release
container_name: mycat2_server
depends_on:
mysql-primary:
condition: service_healthy
ports:
- "8066:8066"
volumes:
- ./conf/prototypeDs.datasource.json:/usr/local/mycat/conf/datasources/prototypeDs.datasource.json
- ./conf/users:/usr/local/mycat/conf/users
restart: unless-stopped
volumes:
mysql_data:
2.3 配置Mycat2核心文件
在项目目录下创建
conf
子目录,添加
prototypeDs.datasource.json
:
{
"dbType": "mysql",
"idleTimeout": 60000,
"instanceType": "READ_WRITE",
"maxCon": 1000,
"name": "prototypeDs",
"password": "root123",
"type": "JDBC",
"url": "jdbc:mysql://mysql-primary:3306/mycat_test?useUnicode=true&characterEncoding=UTF-8",
"user": "root"
}
创建用户配置文件
conf/users/root.user.json
:
{
"dialect":"mysql",
"ip":null,
"password":"mycat123",
"transactionType":"proxy",
"username":"root"
}
2.4 启动与验证
执行以下命令启动整个环境:
docker-compose up -d
检查服务状态:
docker-compose ps
查看Mycat2日志确认启动成功:
docker logs -f mycat2_server
3. 高级配置技巧
3.1 添加MySQL从库
扩展
docker-compose.yml
,添加从库服务:
mysql-replica:
image: mysql:8.0
container_name: mysql_replica
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_REPLICATION_USER: replicator
MYSQL_REPLICATION_PASSWORD: replica123
command:
--server-id=2
--log-bin=mysql-bin
--binlog-format=ROW
--gtid-mode=ON
--enforce-gtid-consistency=ON
--log-slave-updates=ON
depends_on:
mysql-primary:
condition: service_healthy
然后更新Mycat2配置实现读写分离。
3.2 数据持久化方案
为防止容器重启导致数据丢失,我们采用三种持久化策略:
- 数据库数据 :通过Docker卷持久化(已配置)
- Mycat2配置 :使用本地目录挂载
- 日志文件 :添加以下卷配置:
volumes:
- ./logs:/usr/local/mycat/logs
3.3 性能调优参数
在
docker-compose.yml
中为Mycat2添加资源限制:
mycat2:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
reservations:
memory: 1G
4. 开发工作流集成
4.1 与IDE协同开发
在IntelliJ IDEA中配置Database工具连接Mycat2:
- Host: localhost
- Port: 8066
- User: root
- Password: mycat123
4.2 CI/CD管道示例
创建
.gitlab-ci.yml
实现自动化测试:
stages:
- test
mycat_test:
stage: test
image: docker:20.10
services:
- docker:20.10-dind
script:
- docker-compose up -d
- sleep 30 # 等待服务启动
- apk add --no-cache mysql-client
- mysql -h 127.0.0.1 -P 8066 -u root -pmycat123 -e "SHOW DATABASES;"
4.3 常见问题排查
连接超时问题 :
- 检查端口映射是否正确
- 验证MySQL容器健康状态
- 查看Mycat2日志中的错误信息
性能瓶颈分析 :
docker stats mycat2_server mysql_primary
配置热更新 : 修改配置文件后执行:
docker-compose restart mycat2
在实际项目中使用这套方案后,环境准备时间从原来的半天缩短到十分钟内。特别是在需要频繁重建环境的开发阶段,只需简单的
docker-compose down && docker-compose up -d
就能获得一个全新的测试环境。
更多推荐
所有评论(0)