MyCat 的安装与测试

6 篇文章 0 订阅

一、环境准备

(1)、本机环境是三台centos7

IP

主机名

数据库名

安装软件

192.168.77.128

master

db1

mycat,mysql

192.168.77.129

slave1

db2

mysql

192.168.77.134

slave2

db3

mysql

(2)安装mycat的linux中新建用户和组

       1、创建一个新的group

                groupadd mycat

       2、创建一个新的用户,并加入group

               useradd -g mycat mycat

       3、给新用户设置密码

               passwd mycat

二、安装MySQL并创建数据库

(1)安装MySQL参考我的其他两篇文章:

           CentOS7 yum方式 安装MySQL5.7

           CentOS7.4 RPM方式安装mysql5.7

 (2)创建数据库

      根据不同机器数据库名不同

create database db1/db2/db3;

创建后效果如下:

三、下载安装MyCat:

MyCat的官方网站:

http://www.mycat.org.cn/

下载地址:https://github.com/MyCATApache/Mycat-download

也可以下载我的百度云版本:

链接: https://pan.baidu.com/s/1-J-Tb19yozUvfga-hbS0KA            提取码: b262

第一步:将Mycat-server-1.4-release-20151019230038-linux.tar.gz上传至服务器

第二步:将压缩包解压缩。建议将mycat放到/usr/local/mycat目录下。

tar -xzvf Mycat-server-1.4-release-20151019230038-linux.tar.gz

mv mycat /usr/local

四、MyCat分片配置

注:1、2、3 的操作目录:/usr/local/mycat/conf

(1)配置schema.xml

schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、逻辑表以及对应的分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。

schema 标签用于定义MyCat实例中的逻辑库

Table 标签定义了MyCat中的逻辑表  rule用于指定分片规则,auto-sharding-long的分片规则是按ID值的范围进行分片 1-5000000 为第1片  5000001-10000000 为第2片....  。

dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。

dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。

在服务器上创建3个数据库,分别是db1   db2   db3

修改schema.xml如下:

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">

<schema name="youfanshop" checkSQLschema="false" sqlMaxLimit="100">
<table name="employee" primaryKey="ID" dataNode="dn1,dn2,dn3"
rule="sharding-by-intfile" />
</schema>
<dataNode name="dn1" dataHost="master" database="db1" />
<dataNode name="dn2" dataHost="slave1" database="db2" />
<dataNode name="dn3" dataHost="slave2" database="db3" />
<dataHost name="master" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="master:3306" user="root"
password="123456">
</writeHost>
</dataHost>
<dataHost name="slave1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM2" url="slave1:3306" user="root"
password="123456">
</writeHost>
</dataHost>
<dataHost name="slave2" maxCon="1000" minCon="10" balance="0"
  writeType="0" dbType="mysql" dbDriver="native">
 <heartbeat>select user()</heartbeat>
 <writeHost host="hostM3" url="slave2:3306" user="root"
    password="123456">
 </writeHost>
</dataHost>


</mycat:schema>

 

(2)配置 server.xml

server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。在system中添加UTF-8字符集设置,否则存储中文会出现问号

<property name="charset">utf8</property>

在conf目录下配置server.xml ,将目录下没有的用户全部删掉或者注释掉,添加可用的用户,这里添加了一个root用户:

      <user name="root">
          <property name="password">123456</property>
          <property name="schemas">youfanshop</property>
      </user>

(3)修改conf下的partition-hash-int.txt文件

  在下面添加10020=2,原本默认的是分两个就是10000和10010,现在我们三个就要三个分类id了,添加一个即可

(4)设置mysql忽略大小写

在三台mysql的配置文件vi /etc/my.cnf中加入lower_case_table_names = 1来忽略大小写:

lower_case_table_names = 1

(5)修改hosts文件

由于上面schema.xml文件配置使用了slave1、slave2、master没有指定ip,所以需要在hosts中映射过去:

192.168.77.128 master
192.168.77.129 slave1
192.168.77.134 slave2

五、测试MyCat

1、启动MyCat

mycat 的bin目录下执行 ./ mycat start

查看logs:

tail -100 wrapper.log

看到如下结果就是成功了

2.测试mysql表横向分割

在虚拟机外的windows安装Navicat for MySQL,分别连接到三个mysql数据库,执行建表语句:

create table employee (id int not null primary key,name varchar(100),sharding_id int not null);

用Navicat 或者sqlyog连接mycat,mycat默认端口是8066,配置如图:

因为刚才执行了建表语句,这时候连接上了mycat里面也有一个空的employee表

在连上的mycat中执行如下语句

insert into employee(id,name,sharding_id) values(1, 'I am db1',10000);

insert into employee(id,name,sharding_id) values(2, 'I am db2',10010);

insert into employee(id,name,sharding_id) values(3, 'I am db3',10020);

insert into employee(id,name,sharding_id) values(4, 'I am db1',10000);

insert into employee(id,name,sharding_id) values(5, 'I am db2',10010);

insert into employee(id,name,sharding_id) values(6, 'I am db3',10020);

刷新一下navicat查看mycat连接的库

db1

db2

db3

可以看到新增的6条记录被mycat分配到了三台服务器的数据库上。

 

六、sqlyog连接MyCat报错2003

可能是MyCat所在主机没有关闭防火墙:

systemctl stop firewalld

关闭之后,发现问题已解决。

或者不想关闭防火墙,可以打开8066端口:

     1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8066 -j ACCEPT

      2.保存:/etc/rc.d/init.d/iptables save

      3.重启服务:/etc/init.d/iptables restart

      4.查看端口是否开放:/sbin/iptables -L -n

打开端口也可以这样:

firewall-cmd --add-port=8066/tcp --permanent
firewall-cmd --reload

   PS:如果你想一次性添加多个接口,可以将1重复执行多次,然后一次性执行2、3、4。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值