宝塔安装mycat
进入宝塔面板,在左侧选择并进入文件页面,选择要安装的目录,我这里选择的是在/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 出现以下情况则配置成功
(5).配置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目录
<!– 开启实时统计,便于后期安装mycat-eye的监测 –>
<property name=”useSqlStat”>1</property>
<!– 将这四项都去掉注释,使其生效 –>
<property name=”maxStringLiteralLength”>65535</property>
<property name=”sequnceHandlerType”>0</property>
<property name=”backSocketNoDelay”>1</property>
<property name=”frontSocketNoDelay”>1</property>
然后拉到最下面,找到<user>节点,将name为user的节点先删去,修改name是root的节点
其中,user中的name是指连接MyCat的用户名,下面的password是连接MyCat的密码,下面的schemas必须对应schema.xml中<schema>节点中name的值,在这里使用TESTDB会导致一个小问题,我在这里先卖个关子。
<user name=”root” defaultAccount=”true”>
<property name=”password”>123456</property>
<property name=”schemas”>TESTDB</property>
</user>
3.配置schema.xml
直接将配置文件改成如下所示
<schema>节点中,name必须对应server.xml的<user>节点下name为schemas的值,在这里为TESTDB;dataNode的值为后面<dataNode>节点的name的值。
<dataNode>节点中,name必须与<schema>节点的dataNode的值对应,dataHost的值为后面<dataHost>节点的name的值,database为物理数据库名,在这里为之前建的mycat_test。
<dataHost>节点中,name必须与<dataNode>节点的dataHost的值对应,在这里balance先填入0,即不进行读写分离。
<writeHost>节点中,填入MySQL数据库的URL、用户名和密码,在此访问的是本地数据库,因此填入127.0.0.1,如果访问本地数据库却填入外网ip地址的话有可能会出问题。
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE mycat:schema SYSTEM “schema.dtd”>
<mycat:schema xmlns:mycat=”http://io.mycat/”>
<schema name=”TESTDB” checkSQLschema=”false” sqlMaxLimit=”100″ dataNode=”dn1″ />
<dataNode name=”dn1″ dataHost=”dh1″ database=”mycat_test” />
<dataHost name=”dh1″ maxCon=”1000″ minCon=”10″ balance=”0″ writeType=”0″ dbType=”mysql” dbDriver=”native” switchType=”1″ slaveThreshold=”100″>
<heartbeat>select user()</heartbeat>
<writeHost host=”hostM1″ url=”127.0.0.1:3306″ user=”root” password=”123456″>
</writeHost>
</dataHost>
</mycat:schema>
<dataHost>节点说明内容:
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:标签中的<heartbeat>用来检测后端数据库的心跳sql语句;本属性检查从节点与主节点的同步情况(延迟时间数),配合心 跳语句show slave status; 读写分离时,所有的readHost的数据都可靠
4.配置log4j2.xml
为了方便我们查看日志文件,在此将文件修改为debug级别。顺便说一句,日志文件会保存在logs文件夹中。
至此,配置完成。
(5).启动并验证MyCat是否配置成功
输入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部署完成。