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稳定版下载
Macat官方文档
安装Mycat
cd /usr/local/
tar -zxvf /home/chenyb/software/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
配置Macat
- Mycat配置文件都在 ./conf/ 文件夹下
- server.xml:服务配置文件,主要用于用户配置,与用户对应的 schema 关系
- schema.xml:数据源映射配置文件
- rule.xml:规则配置文件
- *.txt:映射策略文件关键属性配置文件
server.xml配置
- user:配置的是mycat访问的用户,习惯与mysql配置一致
- name:用户名
- password:访问密码
- schemas:server.xml 与 schema.xml 中的 schemas 属性呼应关系
schema.xml配置
- name
- schema-name:server.xml 与 schema.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:访问数据库的密码
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" 映射策略文件关键属性配置文件
- 由于是做水平切分,Mycat不会帮我们创建对应的数据库与表,必须要提前创建好
启动Mycat
##### console | start | stop | restart | status | dump #####
#打印日志启动
./bin/mycat console
#后台启动
./bin/mycat start
报错解决
- 提示的很清除,分片数与配置的节点不一致
- 将autopartition-long.txt配置文件中的 0、1、2三个节点配置干掉节点2配置即可
- vm autopartition-long.txt
- server.xml 与 schema.xml schema-name 属性对应关系出了问题
- 经排查 root 用户的对应关系没有问题,user 用户存在,但是没有对应关系,干掉整体的 user 配置,问题解决
- JVM配置配置参数过低,将其改大或者干掉限制
- vim ./conf/wrapper.conf
- schena.xml配置错误,已经提示是在第5行
- schena.xml中配置的连接方式不对,无法连接
- mysql远程权限或者防火墙等其他限制,无法正常连接
启动成功
重新启动Mycat
客户端连接测试
客户端端口:8066
管理端口:9066
存储数据测试
- autopartition-long:该策略默认前500万条数据存储在 0 存储节点,500万-1000万数据存储在 1 存储节点
- 在Mycat客户端插入 id 为 1 的数据,落盘罗在 0 存储节点 (192.168.213.156)
- 在Mycat客户端插入 id 为 5000001 的数据,落盘罗在 1 存储节点 (192.168.213.162)
表示Mycat安装并测试成功,测试的例子为简单的水平切分