1. Mycat2极速部署准备
第一次接触Mycat2的朋友可能会觉得这是个复杂的技术,其实它就是个帮你管理数据库的"智能管家"。想象一下,当你的应用需要同时访问多个数据库时,Mycat2就像个交通警察,帮你把请求合理分配到不同的数据库服务器上。我们今天要做的,就是在30分钟内把这个"警察"请到你的服务器上站岗。
先说说你需要准备的东西:一台能上网的Linux或Windows服务器(配置不用太高,2核4G足够)、MySQL数据库(5.7或8.0版本都行)、还有大约200MB的磁盘空间。我建议用Linux系统来部署,因为后续维护会更方便,不过Windows用户也不用担心,我会分别说明两种系统的操作差异。
这里有个新手常踩的坑:很多人会纠结Mycat1和Mycat2的区别。简单来说,Mycat2是全新重构的版本,性能更好、配置更简单,所以直接上Mycat2就对了。另外记得关闭服务器的防火墙或者开放8066端口,这是Mycat2的默认服务端口,不然后面连接测试会失败。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 五分钟完成安装包下载
现在我们来搞定安装包。打开浏览器,直接访问Mycat2的官方下载地址。这里要注意,官网有时候会更新版本号,所以我建议直接复制下面的链接:
bash复制# 模板安装包
wget http://dl.mycat.org.cn/2.0/install-template/mycat2-install-template-1.20.zip
# 核心JAR包(注意替换版本号)
wget http://dl.mycat.org.cn/2.0/1.21-release/mycat2-1.21-release-jar-with-dependencies.jar
下载完成后,你会得到两个文件:一个zip压缩包和一个100MB左右的jar文件。我遇到过有人问为什么jar包这么大,因为它已经包含了所有依赖库,这样部署时就不用再折腾各种依赖了。
解压zip文件很简单,Linux下用unzip命令,Windows直接右键解压:
bash复制unzip mycat2-install-template-1.20.zip
解压后会得到一个mycat目录,这就是Mycat2的主目录了。现在把下载的jar包复制到mycat/lib目录下。这里有个小技巧:建议把jar包重命名为mycat2.jar,这样后面维护时更容易识别版本。
3. MySQL权限配置详解
Mycat2需要连接你的MySQL数据库,所以得先给它开个门禁卡。打开MySQL客户端,用root账号执行以下SQL:
sql复制CREATE USER 'mycat'@'%' IDENTIFIED BY '123456';
GRANT XA_RECOVER_ADMIN ON *.* TO 'mycat'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%';
FLUSH PRIVILEGES;
这几行SQL做了三件事:创建mycat用户、赋予XA事务权限(MySQL8需要)、授予所有数据库权限。我强烈建议把密码'123456'改成更复杂的,毕竟安全第一。如果遇到权限错误,检查下你的MySQL是否允许远程连接,可以临时把bind-address设为0.0.0.0。
实际项目中我遇到过MySQL8的认证插件问题,如果连接时报错,可以试试这个备用方案:
sql复制ALTER USER 'mycat'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
4. 关键配置文件修改
现在来到最重要的配置环节。进入mycat/conf/datasources目录,找到prototypeDs.datasource.json文件,用文本编辑器打开。你会看到类似这样的内容:
json复制{
"dbType":"mysql",
"idleTimeout":60000,
"initSqls":[],
"instanceType":"READ_WRITE",
"maxCon":1000,
"name":"prototypeDs",
"password":"123456",
"type":"JDBC",
"url":"jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&serverTimezone=Asia/Shanghai",
"user":"mycat"
}
需要修改三个地方:
- user:改成刚才创建的mycat
- password:对应密码
- url里的IP:改成你的MySQL服务器地址
特别注意url中的时区设置&serverTimezone=Asia/Shanghai,这是很多新手会忽略的坑。如果时区不对,可能会导致时间类型数据出错。保存文件前,建议用json在线工具校验下格式,少个逗号都会导致启动失败。
5. 一键启动Mycat2服务
激动人心的启动时刻到了!根据你的操作系统选择对应方式:
Linux用户:
bash复制cd mycat/bin
chmod +x *.sh # 给脚本加执行权限
./mycat start # 启动服务
./mycat status # 查看状态
Windows用户:
powershell复制cd mycat\bin
.\mycat.bat start
启动成功后,检查logs/wrapper.log文件,看到"Mycat2 startup successfully"就说明成功了。如果启动失败,最常见的原因是内存不足,可以修改conf/wrapper.conf中的内存参数:
code复制wrapper.java.initmemory=256
wrapper.java.maxmemory=512
6. 连接测试与验证
现在用MySQL客户端连接Mycat2试试(默认账号root/123456):
bash复制mysql -uroot -p123456 -h127.0.0.1 -P8066
连上后执行几个SQL测试下:
sql复制CREATE DATABASE db1;
USE db1;
CREATE TABLE test(id INT PRIMARY KEY, name VARCHAR(20));
INSERT INTO test VALUES(1,'mycat');
SELECT * FROM test;
如果这些操作都能正常执行,恭喜你!Mycat2已经成功部署。我建议再用Navicat或DBeaver这类GUI工具连接下,确认可视化操作也没问题。
7. 常见问题排查指南
虽然我们尽量一次成功,但难免会遇到问题。这里分享几个我踩过的坑:
- 端口冲突:如果8066端口被占用,修改conf/server.json中的port参数
- 内存溢出:修改wrapper.conf中的内存参数,建议初始256M,最大1024M
- 连接超时:检查MySQL的max_connections参数是否足够
- 时区问题:确保所有节点的时区设置一致
查看日志是最有效的排查手段:
bash复制tail -f logs/wrapper.log # 实时查看日志
grep ERROR logs/wrapper.log # 搜索错误信息
8. 生产环境优化建议
虽然我们完成了基础部署,但要上生产环境还需要做些优化:
- 修改默认密码:编辑conf/users/root.user.json,修改passwordHash
- 配置集群:在conf/datasources下添加多个数据源配置
- 启用心跳检测:在prototypeDs.datasource.json中添加心跳配置
- 调整线程池:修改conf/server.json中的worker线程数
记住,Mycat2的配置文件都是热加载的,修改后不用重启服务,这点非常方便。最后建议把mycat/bin目录加入PATH环境变量,这样以后操作就更方便了。
