前言:这几天在研究数据库中间件方面的知识,并尝试在服务器上搭建MyCat,在此记录一下。
先前准备:Linux服务器一台(我使用的是VMware Workstation Pro搭建的虚拟环境,操作系统是CentOS 7.8.2003,同时我安装了GNOME图形化界面和宝塔Linux面板)
PS.安装GNOME图形化界面和宝塔面板是为了方便部分操作,如果命令行使用熟练的话完全不需要安装。
若本地主机已经可以访问本地虚拟机,请跳过这一步
1.打开虚拟机并进入桌面,点击右上方关机按钮
2.打开虚拟机并进入桌面,点击"有线 已关闭",再点击连接。当"有线 已关闭"变为"有线 已连接",则连接成功。
3.在桌面右键,点击打开终端。
4.输入ifconfig,查看虚拟机ip地址。如图所示,虚拟机地址为192.168.226.128。
5.本地主机打开CMD,输入ipconfig,查看主机ip。如图所示,主机地址为192.168.119.1。
6.互相ping一下试试看。
如上图所示,如果可以成功ping通,则连接成功,则宝塔面板(192.168.226.128:8888)也可以进入。
注意:宝塔面板默认的登录地址和登录的用户名、密码在安装完面板的时候会显示,如下图。
若已经安装MySQL,请跳过这一步
进入宝塔面板,在左侧选择并进入软件商店页面,找到MySQL,点击右侧安装按钮,选择安装版本和安装模式即可(由于我已经安装了MySQL5.7,所以这里显示的不一样)。
在左侧选择并进入安全页面,在放行端口分别输入3306和8066,输入注释并点击放行,下面的列表中会出现我们刚刚填写的数据,若状态为正常,则放行成功。
1.进入官网 http://www.mycat.org.cn/ 点击上方下载按钮
这里我选择的是1.6.7.4版本
进入Mycat-server-1.6.7.4-release目录
选择linux版本,点击下载
2.进入宝塔面板,在左侧选择并进入文件页面,选择要安装的目录,我这里选择的是在/www/server/下新建一个mycat目录。点击新建后会出现新建的目录。
3.进入mycat目录,点击左上角上传按钮,选择刚刚下载完成的文件,点击开始上传。上传完成后,目录中会出现上传的文件。
4.点击右侧解压按钮,修改一下解压出来的文件名,解压完成以后就会出现解压出来的文件(我这里已经提前解压完了)
5.为了方便起见,进入/etc/profile并配置一下MyCat的变量,然后在控制台输入 source /etc/profile 使变量生效。
export MYCAT_HOME=/www/server/mycat/mycat
export PATH=$PATH:$MYCAT_HOME/bin
6.配置完成后,如果在控制台输入 mycat 出现以下情况则配置成功
1.在主机使用NaviCat或者直接在控制台 mysql -u root -p 进入mysql数据库,执行下列代码
drop database if exists mycat_test;
create database mycat_test character set utf8;
use mycat_test;
create table user(
id int NOT NULL AUTO_INCREMENT,
name varchar(50),
age int,
message varchar(50),
PRIMARY KEY (`id`)
);
insert into user(name,age,message) values ('窃格瓦拉','36','打工时不可能打工的');
insert into user(name,age,message) values ('大力哥','42','大力才能出奇迹');
insert into user(name,age,message) values ('马哥','50','不充钱怎么变强?');
insert into user(name,age,message) values ('马爹','56','我不喜欢钱');
如下图所示,出现了mycat_test数据库,同时里面有一张有如下数据的user表,则测试数据添加成功
2.配置server.xml
进入conf目录
1
65535
0
1
1
然后拉到最下面,找到
其中,user中的name是指连接MyCat的用户名,下面的password是连接MyCat的密码,下面的schemas必须对应schema.xml中
123456
TESTDB
3.配置schema.xml
直接将配置文件改成如下所示
select user()
name:节点名称,在上方dataNode标签中调用
maxCon:底层数据库的链接最大数
minCon:底层数据库的链接最小数
balance:值可以为0,1,2,3,分别表示对当前datahost中维护的数据库们的读操作逻辑
0:不开启读写分离,所有的读写操作都在最小的索引号的writeHost(第一个writeHost标签)
1:全部的readHost和备用writeHost都参与读数据的平衡,如果读的请求过多,负责写的第一个writeHost也分担一部分
2:所有的读操作,都随机的在所有的writeHost和readHost中进行
3:所有的读操作,都到writeHost对应的readHost上进行(备用writeHost不参加了),在集群中没有配置ReadHost的情况下,读都到第 一个writeHost完成
writeType:控制当前datahost维护的数据库集群的写操作
0:所有的写操作都在第一个writeHost标签的数据库进行
1:所有的写操作,都随机分配到所有的writeHost(mycat1.5完全不建议配置了)
dbtype:数据库类型(不同数据库配置不同名称,mysql)
dbDriver:数据库驱动,native,动态获取
switchType:切换的逻辑
-1:故障不切换
1:故障切换,当前写操作的writeHost故障,进行切换,切换到下一个writeHost;
slaveThreshold:标签中的
4.配置log4j2.xml
为了方便我们查看日志文件,在此将文件修改为debug级别。顺便说一句,日志文件会保存在logs文件夹中。
至此,配置完成。
输入mycat start启动mycat
在Navicat中输入mycat信息,注意,这里的端口号是8066,即mycat默认端口号
进入数据库,我这里出现了Unknown database的错误,原因就是前面的url我填入了192.168.226.128,导致mycat访问不到,具体原因我也不是很清楚,但是我们将它改为127.0.0.1,并使用mycat restart重启mycat服务即可解决问题。
修改完成后,我们就能看到mycat中的表,但是双击表明会出现Table doesn't exist的问题,这是因为我们前面使用了TESTDB作为了MyCat逻辑库名,Navicat可能访问不到物理库mycat_test,那么,我们将之前两处逻辑库名改为mycat_test,重启mycat后即可解决问题。
在这里就能看到物理库mycat_test的数据了,增删改能够使物理库的数据变动,大家可以自己尝试
至此,基本的MyCat部署完成。