侧边栏壁纸
博主头像
zyixin

当你觉得为时已晚的时候,恰恰是最早的时候

  • 累计撰写 66 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Mycat安装部署

zyixin
2022-04-01 / 0 评论 / 0 点赞 / 2,976 阅读 / 3,335 字
温馨提示:
本文最后更新于 2022-04-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、mycat概述

Mycat 是基于阿里巴巴曾经开源的知名产品 - cobar 演变而来, 简单来说MyCAT就是一个数据库中间件产品支持mysql集群, 你可以像使用mysql一样使用mycat。
其实可以这么简单理解: 你有多个数据库, 那么你存数据的时候存到哪个数据库呢? 所以我们需要一个存储策略, 而mycat就是做这个事情的, 简单来说: mycat就是管理数据库集群的.
mycat-1

2、Mycat安装包准备

此文档基于三台数据库服务器搭建mycat集群
192.168.139.15 数据库 mycat部署服务器
192.168.139.100 数据库
192.168.139.200 数据库

2.1、上传java jdk1.8环境变量

新建mycat用户

[root@study ~]# useradd mycat

· 用mycat用户进行下面操作
运行配置mycat需要先配置jdk环境变量,先将准备好的java jdk1.8的包,上传到需要部署mycat的服务器上/home/mycat目录下
解压jdk包

[mycat@study ~]# cd /home/mycat
[mycat@study ~]# tar -zxvf jdk-8u45-linux-x64.tar.gz

2.2、Mycat软件包下载

下载地址http://www.mycat.io 选择所需要对应版本的软件包

2.3、Mycat安装

将下载好的mycat软件包,使用mycat用户上传到服务器/home/mycat/目录下,并解压
使用命令:

[mycat@study ~]# tar -zxvf mycat*
[mycat@study ~]# ll

解压完后可以在/home/mycat目录下看到一个mycat文件夹,这里面就是mycyat,cd到刚解压的mycat目录下,使用命令将里面的文件移动到上一层目录
mycat-2
命令:

[root@study ~]# cd /home/mycat/mycat
[root@study mycat]# mv * ../
[root@study mycat]# cd ..

2.4、配置环境变量

使用mycat用户,修改~/.bash_profile文件
命令:

[mycat@study ~]# vim ~/.bash_profile

在下面新增以下内容

export MYCAT_HOME=/home/setup/mycat
export JAVA_HOME=/home/setup/java/jdk1.8.0_45
export CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$MYCAT_HOME/bin:

(需要注意的是,PATH在配置的时候,一定要把$JAVA_HOME/bin放在前面)
图示:
mycat-3

修改完成后,让其变量生效

[mycat@study ~]# source ~/.bash_profile

3、Mycat配置

3.1、修改host名称

使用root用户操作

[root@study ~]# vim /etc/hosts
#在最下面新增需要配置的三台服务器主机
172.21.118.27		mycat1
172.21.118.28		mycat2
172.21.118.19		mycat3

3.2、分片配置

mycat的分片策略
· 逻辑库 (schema)
逻辑库不是真实存在的, 想要把数据存储到物理库中, 就需要通过逻辑库来操作, 简单来说: 逻辑库是来管理和调度物理库的.
· 逻辑表 (table)
逻辑表的概念是类似于逻辑库的, 逻辑表是来管理和调度物理表的.
· 分片节点 (dataNode)
ip+数据库名
· 节点主机 (dataHost)
分片节点所在的主机
· 分片规则 (rule)
就是拆分的算法, 如何来拆分呢? 就要用到分片规则
这里分为三步:
连接mysql, 创建三个数据库db1, db2, db3 (注意是连接mysql, 不是mycat)
修改schema.xml文件
修改server.xml文件
修改rule.xml文件

** 3.2.1 连接mysql,分别创建三个数据库db1、db2、db3 **
· 登陆第一台mysql数据库,创建db1库
命令:

[mycat@study mycat]$ mysql -ucincc -pcinCC1234
mysql> CREATE DATABASE `db1` CHARACTER SET 'utf8';

· 登陆第二台mysql数据库,创建db1库
命令:

[mycat@study mycat]$ mysql -ucincc -pcinCC1234
mysql> CREATE DATABASE `db2` CHARACTER SET 'utf8';

· 登陆第三台mysql数据库,创建db1库
命令:

[mycat@study mycat]$ mysql -ucincc -pcinCC1234
mysql> CREATE DATABASE `db3` CHARACTER SET 'utf8'

** 3.2.2、 修改server.xml文件**
这里主要配置mycat的用户和权限信息,这里的账户用于后面连接mycat使用。
命令:

[mycat@study ~]$ vim ~/mycat/conf/server.xml

# 修改最下面逻辑库的用户名和密码
<user name="cincc">
        <property name="password">cinCC1234</property>
        <property name="schemas">TESTERDB</property>
</user>

** 3.2.2、 修改schema.xml文件**
这里主要配置数据库信息,一个schema就是一个逻辑库,可以理解为Mycat管理的一个数据库DB(实际上不存在,是一个虚拟的概念)name属性和server.xml里面对应。
table是Mycat的逻辑表,这里我们配置一个名为tb_test的逻辑表
dataNode属性是将其绑定在真实数据库中的数据节点
dataHost属性就是我们的mysql连接
rule属性就是分片规则
命令:

[mycat@study ~]$ vim ~/mycat/conf/schema.xml

修改以下内容:
mycat-4

3.3、启动mycat

启动命令:mycat start
查看命令:mycat status
重启命令:mycat restart
启动时查看是否报错命令:mycat console

3.4、测试mycat分片

我们用mysql客户端连接mycat, 在mycat中执行下面的SQL语句, 创建一张tb_test表
命令:

[mycat@study ~]# mysql -uroot -proot -P8066

mysql> CREATE TABLE tb_test (
  id BIGINT(20) NOT NULL,
  title VARCHAR(100) NOT NULL ,
  PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

我们再查看MySQL的3个库, 发现表都自动创建好了.
接下来是插入表数据, 我们来插入一些数据

INSERT INTO TB_TEST(ID,TITLE) VALUES(1,'goods1');
INSERT INTO TB_TEST(ID,TITLE) VALUES(2,'goods2');
INSERT INTO TB_TEST(ID,TITLE) VALUES(3,'goods3');
INSERT INTO TB_TEST(ID,TITLE) VALUES(5000001,'goods5000001');
INSERT INTO TB_TEST(ID,TITLE) VALUES(10000001,'goods10000001');

查看结果, 我们发现前3条数据插入到了db1中, 第4条数据插入到了db2中, 第5条数据插入到了db3中…
具体的分片规则可以查看官方文档说明,也可以进行自定义分片。

0

评论区