安装Mycat

  1. 进入官网,或者直接进入下载地址选择最新的版本进行下载

  2. 将压缩包上传到指定目录

  3. 解压缩

    tar -zxvf Mycat-server-1.6.7.6-release-20220524173810-linux.tar.gz 
  4. 进入mycat/conf

  5. 配置server.xml
    file
    其中root为默认的用户信息,测试时可以使用当前账户,schemas为需要分库表的库名,需要配置多个schema用逗号隔开。defaultSchema 为默认的配置。可以看出server主要用来配置访问的用户,以及当前用户可以访问的库表

  6. 配置schemas.xml

  7. 首先配置Host
    file

    • name:节点主机名称
    • maxCon:指定每个读写实例连接池的最大连接
    • minCon:指定每个读写实例连接池的最小连接,即初始化连接池的大小
    • balance:读操作负载均衡类型,目前有三个可选值”0”、”1”、”2”、”3”。读写分离相关策略,”0”代表不开启读写分离,读操作都发到writeHost上
    • writeType:写操作负载均衡类型,目前有三可选值”0”、”1”、”2”,”0”表示所有写操作发送到第一个writeHost,第一个挂了切换到还生存的第二个writeHost。
    • dbType:指定连接的数据库类型,目前支持二进制的Mysql协议,还有其他的JDBC连接的数据库。例如mongodb、oracle、spark等
    • dbDriver:指定连接数据库的驱动,目前可选指为native和JDBC。native支持mysql和mariadb,其他数据库需要用JDBC驱动
    • switchType:自动切换标识,”1”为默认值,表示不自动切换,其他可选指为”1”、”2”,
    • tempReadHostAvailable:writeHost失联后,其下面的readHost仍旧可用,默认0,可选值0、1
  8. 配置writeHost 写库,参数为数据的基本参数,多个数据库配置多个dataHost
    file

  9. 配置数据节点dataNode,有几个节点就需要配置几个
    file
    名称可以任意,datahost为上面配置的host的名称,database为对应的库名称

  10. 配置schema,先配置一个分片表进行测试
    file
    name数据库种对应的表名,dataNode为数据节点,rule为分片规则

  11. 对应数据结构
    file

  12. 运行mycat

    ./bin/mycat console

    出现错误
    file
    数据分片规则与node节点有问题,请确认

  13. 再次进入schemas.xml,可以看到配置的规则时auto-sharding-long

  14. 进入rule.xml,找到auto-sharding-long,看的规则为rang-long
    file

  15. 往下在funciton中找到 rang-long
    file

  16. 可以看的实现类和映射的文件为autopartition-long.txt,退出进入文件
    file
    可以看到分片规则为每500M分配到一个库中,一共有三个分配规则,但是我们只有两个节点,当符合第三个分配规则的数据出现时,是不能分配的。

  17. 修改autopartition-long.txt,把最后一行注释
    file

  18. 再次运行
    file
    出现root账户不存在错误,

  19. 进入server.xml
    file

file
配置的schemas为user,schemas.xml配置的是TESTDB,两者不一致,修改为一致,同时把user的schemas也改为user

  1. 再次运行,启动成功
    file

  2. 使用navicat测试连接
    file
    file
    默认端口为8066,user账户和root账户连接都没有问题

  3. 进入user表
    file
    数据为空,添加一条id为1的数据
    file

  4. 查看真实的数据库
    file
    file
    数据落在了30的库中,根据分片规则可以知道,1-500m的在30,500-1000m的在1y.然后我们创建一个id为6000000的数据进入
    file

  5. 查看6000000的数据存储
    file
    file

数据落在了1y的库中,分片成功

发表回复