MySql - Linux Mycat安装&水平切分

目录

准备环境

安装Mycat

 配置Macat

server.xml配置 

 schema.xml配置

 rule.xml配置

 启动Mycat

 报错解决

启动成功 

 客户端连接测试

 存储数据测试


准备环境

  • 三台虚拟机,192.168.213.156 和 192.168.213.162 分别安装mysql 8 ,192.168.213.163 安装Mycat

Mycat 1.6稳定版下载

github下载地址

Mycat DL下载地址

Mycat官网

Macat官方文档

安装Mycat

cd /usr/local/

tar -zxvf /home/chenyb/software/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

mysql 字段切割 查询_xml

 配置Macat

  • Mycat配置文件都在 ./conf/ 文件夹下
  • server.xml:服务配置文件,主要用于用户配置,与用户对应的 schema 关系
  • schema.xml:数据源映射配置文件
  • rule.xml:规则配置文件
  • *.txt:映射策略文件关键属性配置文件

mysql 字段切割 查询_mysql 字段切割 查询_02

server.xml配置 

  • user:配置的是mycat访问的用户,习惯与mysql配置一致
  • name:用户名
  • password:访问密码
  • schemas:server.xmlschema.xml 中的 schemas 属性呼应关系

mysql 字段切割 查询_xml_03

 schema.xml配置

  • name
  • schema-name:server.xmlschema.xml 中的 schemas 属性呼应关系
  • tables-name:Mycat中的虚拟表名
  • dateNode-name:对应的是 tables-dataNode ,多个用“,”分隔
  • dataHost-name:对应的是 dataNode-dataHost
  • schema
  • schema-checkSQLschema:是否开启 schema 检查 SQL 功能
  • schema-sqlMaxLimit:默认分页100,当运行的 SQL 语句中包含limit属性,将覆盖该属性
  • table
  • table-dataNode:对应 dataNode-name 属性
  • table-rule:分表策略,对应着 table.xml 中的 tableRule-name 属性,保持一致
  • dataNode
  • dataNode-dataHost:对应 dataHost-name 属性
  • dataNode-database:对应真实数据库的名称,多个几点数据库名称可以不一致,建议一致
  • dataHost
  • dataHost-maxCon:最大连接数
  • dataHost-minCon:最小空闲数
  • dataHost-balance:负载策略
  • 当balance=0 时,不开启读写分离,所有读操作都发生在当前的writeHost上
  • 当balance=1 ,所有读操作都随机发送到当前的writeHost对应的readHost和备用的writeHost
  • 当balance=2,所有的读操作都随机发送到所有的writeHost,readHost上
  • .当balance=3 ,所有的读操作都只发送到writeHost的readHost上
  • dataHost-writeType
  • writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties 
  • writeType="1",所有写操作都随机的发送到配置的writeHost 
  • writeType="2",没实现
  • dataHost-dbType:数据库类型
  • dataHost-dbDriver:数据库驱动
  • dataHost-switchType
  • writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties 
  • writeType="1",所有写操作都随机的发送到配置的writeHost
  • writeType="2",没实现
  • dataHost-slaveThreshold:主从延迟阀值
  • writeHost:主库,只写
  • writeHost-host:当前 dataHost 内唯一
  • writeHost-url:数据库连接 ip :端口号
  • writeHost-user:访问数据库的用户
  • writeHost-password:访问数据库的密码
  • readHost:从库,只读
  • readHost-host:当前 dataHost 内唯一
  • readHost-url:数据库连接 ip :端口号
  • readHost-user:访问数据库的用户
  • readHost-password:访问数据库的密码

mysql 字段切割 查询_Mr.chenyb_04

 rule.xml配置

  • tableRule
  • tableRule-name:对应着 schema.xml 中的 table-rule 属性,保持一致
  • rule
  • tableRule-rule-columns:对应着 Mycat 虚拟表中的 id,根据该属性切分
  • tableRule-rule-algorithm:对应着 function-name 属性,呼应关系
  • function
  • function-name:对应着 tableRule-rule-algorithm 属性,呼应关系
  • function-class:策略实现类
  • function-name:"mapFile" 映射策略文件关键属性配置文件

mysql 字段切割 查询_xml_05

mysql 字段切割 查询_mysql 字段切割 查询_06

  • 由于是做水平切分,Mycat不会帮我们创建对应的数据库与表,必须要提前创建好

mysql 字段切割 查询_mysql 字段切割 查询_07

 启动Mycat

##### console | start | stop | restart | status | dump #####

#打印日志启动
./bin/mycat console


#后台启动
./bin/mycat start

 报错解决

  • 提示的很清除,分片数与配置的节点不一致
  • 将autopartition-long.txt配置文件中的 0、1、2三个节点配置干掉节点2配置即可
  • vm autopartition-long.txt

mysql 字段切割 查询_mysql 字段切割 查询_08

 

mysql 字段切割 查询_Mr.chenyb_09

  • server.xml 与 schema.xml schema-name 属性对应关系出了问题
  • 经排查 root 用户的对应关系没有问题,user 用户存在,但是没有对应关系,干掉整体的 user 配置,问题解决

mysql 字段切割 查询_xml_10

mysql 字段切割 查询_数据库_11

mysql 字段切割 查询_xml_12

  • JVM配置配置参数过低,将其改大或者干掉限制
  • vim ./conf/wrapper.conf

mysql 字段切割 查询_Mr.chenyb_13

mysql 字段切割 查询_mysql 字段切割 查询_14

  •   schena.xml配置错误,已经提示是在第5行

mysql 字段切割 查询_Mr.chenyb_15

  • schena.xml中配置的连接方式不对,无法连接
  • mysql远程权限或者防火墙等其他限制,无法正常连接

mysql 字段切割 查询_Mr.chenyb_16

mysql 字段切割 查询_配置文件_17

启动成功 

重新启动Mycat

mysql 字段切割 查询_xml_18

mysql 字段切割 查询_Mr.chenyb_19

 客户端连接测试

客户端端口:8066

管理端口:9066

mysql 字段切割 查询_Mr.chenyb_20

 存储数据测试

  • autopartition-long:该策略默认前500万条数据存储在 0 存储节点,500万-1000万数据存储在 1 存储节点
  • 在Mycat客户端插入 id 为 1 的数据,落盘罗在 0 存储节点 (192.168.213.156)

mysql 字段切割 查询_xml_21

mysql 字段切割 查询_Mr.chenyb_22

mysql 字段切割 查询_配置文件_23

  • 在Mycat客户端插入 id 为 5000001 的数据,落盘罗在 1 存储节点 (192.168.213.162) 

mysql 字段切割 查询_数据库_24

mysql 字段切割 查询_数据库_25

mysql 字段切割 查询_mysql 字段切割 查询_26

 表示Mycat安装并测试成功,测试的例子为简单的水平切分