从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

    • Redis

    • Mybatis

    • Lucene

    • Elasticsearch

    • MQ

    • MyCat

      • MyCat2-尚硅谷
      • MyCat 是什么,为什么要用
      • 搭建环境
        • 准备环境
        • 开防火墙
        • 下载 MyCat
        • 安装 MyCat
        • 配置 MyCat
        • 验证数据库访问情况
        • 配置 alias
        • 启停 MyCat
        • 登录 MyCat
        • 常见问题
        • 总结
      • MyCat 概念
      • MyCat 的配置文件
      • 一主一从复制
      • 一主一从读写分离
      • 双主双从复制方案
      • 分库分表
      • MyCat安全设置
      • Mycat2-UI
    • Lombok

  • SpringMVC

  • SpringBoot

  • Java
  • 主流框架
  • MyCat
2023-06-28
目录

搭建环境

# 20.搭建环境

为了后续的学习,我们先准备 4 个服务器,并安装 MySQL,然后再安装 MyCat

# 准备环境

  1. 准备 Linux,可以使用虚拟机,或者云服务器,本教程使用的是 Centos8,4 个服务器 IP 为 192.168.56.101/103/104/105
  2. 安装 MySQL(MySQL 8),并设置 root 用户密码为 Mycat0520@
  3. 安装 Java 8

当然,也可以一台服务器装数个 MySQL(端口不同)来模拟,这里不展开。 ‍ 接下来我们创建一个新的数据库及用户:

DROP DATABASE IF EXISTS learnMycat;
CREATE DATABASE learnMycat;

CREATE USER IF NOT EXISTS learnMycatUser@'%' IDENTIFIED BY 'Mycat0520@';
GRANT ALL PRIVILEGES ON learnMycat.* TO learnMycatUser@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
1
2
3
4
5
6

# 开防火墙

一般来说,Centos8 都是开启防火墙的,这就导致不能用 Navicat 等工具连接;可以通过 systemctl status firewalld 查看防火墙状态。

为此,我们可以关闭防火墙:systemctl stop firewalld,关闭后可以再次查看状态

或者开放 3306 端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent,开放之后,可以查询下 3306 端口是否被放开了:firewall-cmd --zone=public --query-port=22/tcp

后续 MyCat 本身也会用到一些端口,读者按需放开端口或关闭防火墙

如果使用云服务器,还需要在云服务器控制台上放开端口 ‍

# 下载 MyCat

MyCat 的安装很简单。我们先下载安装包(tar 文件),以及对应的 jar 包。tar 包是一个外壳,而 jar 是核心。

MyCat 官网:MyCat2 (opens new window),我们可以在官网提供的下载链接中下载:

例如我们选 文件下载服务 (opens new window):

‍

我们下载 压缩包 (opens new window):install-template/mycat2-install-template-1.20.zip

打开 http://dl.mycat.org.cn/2.0/1.21-release/ (opens new window) ,下载 最新的 jar 包 (opens new window):

‍

读者也可使用 wget 命令下载 ‍

# 安装 MyCat

这里我们将两个文件放到服务器(例如 192.168.56.103)的 /opt 目录下,然后解压:

unzip -D mycat2-install-template-1.20.zip
1

然后将 jar 包挪到 mycat 的 lib 目录下:

mv mycat2-1.21-release-jar-with-dependencies.jar mycat/lib/
1

然后我们将 MyCat 复制到 /usr/local 目录下:

 cp -r mycat /usr/local
1

‍ 然后就可以可以看看 bin 目录里的内容:

cd /usr/local/mycat/bin
# ll
总用量 2588
-rw-r--r--. 1 root root  15666 6月  14 20:56 mycat
-rw-r--r--. 1 root root   3916 6月  14 20:56 mycat.bat
-rw-r--r--. 1 root root 281540 6月  14 20:56 wrapper-aix-ppc-32
-rw-r--r--. 1 root root 319397 6月  14 20:56 wrapper-aix-ppc-64
-rw-r--r--. 1 root root 253808 6月  14 20:56 wrapper-hpux-parisc-64
-rw-r--r--. 1 root root 140198 6月  14 20:56 wrapper-linux-ppc-64
-rw-r--r--. 1 root root  99401 6月  14 20:56 wrapper-linux-x86-32
-rw-r--r--. 1 root root 111027 6月  14 20:56 wrapper-linux-x86-64
-rw-r--r--. 1 root root 114052 6月  14 20:56 wrapper-macosx-ppc-32
-rw-r--r--. 1 root root 233604 6月  14 20:56 wrapper-macosx-universal-32
-rw-r--r--. 1 root root 253432 6月  14 20:56 wrapper-macosx-universal-64
-rw-r--r--. 1 root root 112536 6月  14 20:56 wrapper-solaris-sparc-32
-rw-r--r--. 1 root root 148512 6月  14 20:56 wrapper-solaris-sparc-64
-rw-r--r--. 1 root root 110992 6月  14 20:56 wrapper-solaris-x86-32
-rw-r--r--. 1 root root 204800 6月  14 20:56 wrapper-windows-x86-32.exe
-rw-r--r--. 1 root root 220672 6月  14 20:56 wrapper-windows-x86-64.exe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

‍ 然后给可执行文件添加权限:

cd /usr/local/mycat/bin
chmod +x wrapper-linux-*
chmod +x mycat
1
2
3

至此,安装完成

# 配置 MyCat

我们修改下 MyCat 的 prototype 的配置:

vim /usr/local/mycat/conf/datasources/prototypeDs.datasource.json 
1

‍ 然后修改数据库连接信息,例如数据库 IP,数据库名,用户,密码,例如:

{
	"dbType":"mysql",
	"idleTimeout":60000,
	"initSqls":[],
	"initSqlsGetConnection":true,
	"instanceType":"READ_WRITE",
	"maxCon":1000,
	"maxConnectTimeout":3000,
	"maxRetryCount":5,
	"minCon":1,
	"name":"prototypeDs",
	"password":"learnMycatPassword0520@",
	"type":"JDBC",
	"url":"jdbc:mysql://localhost:3306/learnMycat?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8",
	"user":"learnMycatUser",
	"weight":0
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

查看 MyCat 用户休息:

cat /usr/local/mycat/conf/users/root.user.json
1

‍ 内容如下:

{
	"dialect":"mysql",
	"ip":null,
	"password":"123456",
	"transactionType":"xa",
	"username":"root"
}
1
2
3
4
5
6
7

这是登录 MyCat 时的用户,而不是登录 MySQL 的用户

关于配置文件的更多内容,这里不展开,后续再说

# 验证数据库访问情况

在实验过程中,为了方便,MyCat 和数据库部署在同一个数据库上。

一般情况下,Mycat 作为数据库中间件,要和数据库部署在不同机器上。所以最好先验证下当前服务器能否成功连接数据库(也就是确保网络没问题)

mysql -ulearnMycatUser -pMycatP0520@ -h 192.168.56.101 -P 3306
mysql -ulearnMycatUser -pMycatP0520@ -h 192.168.56.103 -P 3306
mysql -ulearnMycatUser -pMycatP0520@ -h 192.168.56.104 -P 3306
mysql -ulearnMycatUser -pMycatP0520@ -h 192.168.56.105 -P 3306
1
2
3
4

# 配置 alias

可以看到,每次登录数据库都要输入一长串命令,我们可以配置个别名,简化输入。

我们编辑下 vim ~/.bashrc,在文件最后加上这样一行:

alias mysqll="mysql -uroot -pMycat0520@"
1

然后刷新权限:source ~/.bashrc,现在我们就可以在命令行输入 mysqll 来直接登录 MySQL 了。

登录 MyCat 也可配置别名。

# 启停 MyCat

至此,我们就可以启动 MyCat 了。和 MyCat 有关的命令如下:

cd /usr/local/mycat/bin
./mycat start 启动(后台)
./mycat status 查看启动状态
./mycat stop 停止
./mycat console 前台运行
./mycat restart 重启服务
./mycat pause 暂停
1
2
3
4
5
6
7

# 登录 MyCat

使用我们刚刚看到的 MyCat 用户信息来登录:

mysql -uroot -p123456 -h127.0.0.1  -P8066
1

‍ 为什么使用的是 MySQL 的命令呢?这是因为 MyCat 就相当于是一个数据库了,我们直接连接它,然后我们输入命令的时候,MyCat 会帮我们分发到具体的数据库上执行。例如我们查看数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| learnMycat         |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
1
2
3
4
5
6
7
8
9

# 常见问题

‍

# 查看启动日志

如果 MyCat 启动遇到什么问题,可以查看日志:

/usr/local/mycat/logs/wrapper.log 
1

# 关于端口

连接 MySQL 时,默认端口号是 3306,链接成功后不判断 -P 端口号参数,因此如果 MyCat 启动失败,连接是加上了 8066 端口,最后连接的还是 MySQL 而不是 MyCat。

因此,最好加上 -h 参数,指定本机的 IP。

因此启动 MyCat 后,最好查看下 MyCat 的日志,是否启动成功了,例如:

INFO  | jvm 1   | 2023/06/19 20:16:34 | 2023-06-19 20:16:34,049[INFO]io.mycat.vertx.VertxMycatServer.lambda$start$1:166Mycat Vertx server 2c704137-c5c8-4bc2-b2aa-ac0b9af426bc started up
1

而如果有异常,则需要看看异常信息并解决。笔者曾遇到过启动 MyCat 一段时间后,MyCat 自己挂掉的情况

# 总结

现在我们搭建了基本的环境,接下来我们就学习 MyCat 的理论知识,然后动手搭建读写分离,主从集群等

上次更新: 2025/5/17 12:26:09
MyCat 是什么,为什么要用
MyCat 概念

← MyCat 是什么,为什么要用 MyCat 概念→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式