Mycat在Linux环境下的安装部署

一、环境准备

  1. JDK
     Mycat 是由 Java 语言编写的数据库中间件,所以它的运行必不可少 JDK,下面是 Mycat 的各版本与 JDK 版本对应关系表。
    MycatJDK
    1.3 ~ 1.51.7
    1.61.8
    1.71.7
    2.01.8

    检查当前已安装 JDK 版本的命令是 java -version,此处略去具体的 JDK 安装步骤。

  2. MySQL
     分别创建四个数据库实例:testtest1test2test3
     用户名及密码:root/123456。此处并不一定需要 root 用户,只要满足所使用的用户拥有操作上述 4 个数据库实例的权限即可。

二、安装 Mycat

  1. 创建 mycat 用户
     通常我们所使用的环境中部署了各种应用,为了的各应用之间相互隔离,互不干扰,此处采用为 Mycat 创建一个专属的用户。
     在创建用户前,先使用 root 用户检查是否已存在 mycat 用户:

    cat /etc/group|grep mycat
    cat /etc/passwd|grep mycat
    

     若检查出的结果为空,则表示不存在 mycat 用户组及用户,可进行继续进行创建 mycat 用户:

    groupadd mycat
    useradd -g mycat mycat
    

    mycat 用户创建好之后,千万别忘记使用 passwd mycat 命令更改密码。

  2. 下载和解压
     Mycat 有提供编译好的安装包,本文使用的是 Mycat-server-1.6.7.3-release–20190923113828-linux.tar.gz 版本,其他版本请至 http://dl.mycat.io/ 下载。
     将下载下来的安装包上传至服务器后,解压到 /usr/local (解压的目标路径可自定义,此处仅因为笔者习惯于将应用程序放在该路径)目录下,并将其归并到 mycat 用户下。具体命令如下:

    tar -zxf Mycat-server-1.6.7.3-release--20190923113828-linux.tar.gz -C /usr/local
    

    记得要使用 root 用户完成上述步骤,不然会报权限不足的错误:Permission denied。

     解压后,在 /usr/local/ 目录下会出现了一个名为 mycat 文件夹,再把该文件夹的的拥有者变更为 mycat 用户,具体命令如下:

    chown -R mycat:mycat /usr/local/mycat
    
  3. 配置环境变量
      使用 mycat 用户编辑打开 ~/.bashrc(vim ~/.bashrc)文件,加入 MYCAT_HOME 的设置:

     export MYCAT_HOME=/usr/local/mycat
     export PATH=$PATH:$MYCAT_HOME/bin
    

     使用 :wq 保存退出,然后用 source ~/.bashrc 命令让配置生效。

三、配置 Mycat

 Mycat 从 1.5 版本开始支持两种配置方式:Zookeeper 及本地 XML 方式。Mycat 默认以本地加载 xml 的方式启动,如果需要配置成 ZooKeeper 的方式启动,则应把 conf 目录下 myid.properties 文件中的 loadZk 参数设置成 true。ZooKeeper 配置方式解决了统一配置和管理的问题,同时解决了 Mycat 与周边组件的协调问题。

 如果使用 ZooKeeper 配置方式,生效的配置文件都在 conf/zkconf 目录下(xml 方式生效的配置文件都在 conf 目录下)。ZooKeeper 的配置方式依赖于 ZooKeeper,所以需要先安装 ZooKeeper 并初始化其中的数据,然后执行 bin 目录下的初始化 ZooKeeper 脚本 init_zk_data.sh。

3.1 配置 server.xml

 server.xml 配置文件包含了 Mycat 的系统配置信息,它有两个重要的标签,分别是 <user>、<system>。在初次尝试使用 Mycat 时,该配置文件内大部分信息都无需变动,只需变动为 Mycat 指定专属用户的信息。

<user name="root" defaultAccount="true">
    <!-- 应用访问Mycat的密码,可任意指定 -->
    <property name="password">123456</property>
    <!-- 须与schema.xml文件内<schema>标签的name属性值对应 -->
    <property name="schemas">TESTDB</property>
</user>

<user name="user">
    <property name="password">123456</property>
    <!-- 须与schema.xml文件内<schema>标签的name属性值对应 -->
    <property name="schemas">TESTDB</property>
    <property name="readOnly">true</property>
</user>

3.2 配置 schema.xml

 schema.xml 作为 mycat 的重要配置文件之一,涵盖了 Mycat 的逻辑库、表、分片规则、分片节点及数据源。

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn0">
        <!-- 将 travel_record 表拆分到 dn1、dn2 和 dn3 节点上,分片规则是 auto sharding by id (long) -->
        <table name="travel_record" dataNode="dn$1-3" ule="auto-sharding-long"/>
    </schema>

    <dataNode name="dn0" dataHost="localhost1" database="test"/>
    <dataNode name="dn$1-3" dataHost="localhost1" database="test$1-3"/>

    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" 
            dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <!--  MySQL的连接信息-->
        <writeHost host="hostM1" url="localhost:3306" user="root" password="123456"/>
     </dataHost>
</mycat:schema>

3.3 配置 rule.xml

 rule.xml 里面定义了对表进行拆分所涉及到的规则定义,我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。此处仅使用默认配置即可,无需在手动配置。

四、启动

 若上述步骤都成功执行,则可直接使用 mycat 用户执行启动命令:

mycat start

 mycat 支持的命令{ console | start | stop | restart | status | dump }
 启动成功后,可执行类似 mysql 命令进入 mycat 的监控界面:

mysql -h 127.0.0.1 -u root -p123456 -P 8066

请将 127.0.0.1 更改为 Mycat服务所在的的节点 IP 或节点名称;mycat 的监控端口为 9066,数据端口为 8066。

 再创建一个存在 id 字段(分片规则 auto-sharding-long 是以 id 为分片键)的 travel_record 表,具体的建表语句如下:

CREATE TABLE travel_record (
  id int(11) NOT NULL AUTO_INCREMENT,
  name) DEFAULT NULL,
  PRIMARY KEY (id)
);

 然后,可尽情享受 Mycat 的世界。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值