搭建环境
# 20.搭建环境
为了后续的学习,我们先准备 4 个服务器,并安装 MySQL,然后再安装 MyCat
# 准备环境
- 准备 Linux,可以使用虚拟机,或者云服务器,本教程使用的是 Centos8,4 个服务器 IP 为 192.168.56.101/103/104/105
- 安装 MySQL(MySQL 8),并设置 root 用户密码为
Mycat0520@
- 安装 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;
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
然后将 jar 包挪到 mycat 的 lib 目录下:
mv mycat2-1.21-release-jar-with-dependencies.jar mycat/lib/
然后我们将 MyCat 复制到 /usr/local
目录下:
cp -r mycat /usr/local
然后就可以可以看看 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
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
2
3
至此,安装完成
# 配置 MyCat
我们修改下 MyCat 的 prototype 的配置:
vim /usr/local/mycat/conf/datasources/prototypeDs.datasource.json
然后修改数据库连接信息,例如数据库 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
}
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
内容如下:
{
"dialect":"mysql",
"ip":null,
"password":"123456",
"transactionType":"xa",
"username":"root"
}
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
2
3
4
# 配置 alias
可以看到,每次登录数据库都要输入一长串命令,我们可以配置个别名,简化输入。
我们编辑下 vim ~/.bashrc
,在文件最后加上这样一行:
alias mysqll="mysql -uroot -pMycat0520@"
然后刷新权限: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 暂停
2
3
4
5
6
7
# 登录 MyCat
使用我们刚刚看到的 MyCat 用户信息来登录:
mysql -uroot -p123456 -h127.0.0.1 -P8066
为什么使用的是 MySQL 的命令呢?这是因为 MyCat 就相当于是一个数据库了,我们直接连接它,然后我们输入命令的时候,MyCat 会帮我们分发到具体的数据库上执行。例如我们查看数据库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| learnMycat |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)
2
3
4
5
6
7
8
9
# 常见问题
# 查看启动日志
如果 MyCat 启动遇到什么问题,可以查看日志:
/usr/local/mycat/logs/wrapper.log
# 关于端口
连接 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
而如果有异常,则需要看看异常信息并解决。笔者曾遇到过启动 MyCat 一段时间后,MyCat 自己挂掉的情况
# 总结
现在我们搭建了基本的环境,接下来我们就学习 MyCat 的理论知识,然后动手搭建读写分离,主从集群等