Mycat
第一次安装mycat和使用,遇到很多坑记录下来分享希望对新手有帮助
一、概念
是什么? 开源分布式数据库系统,数据库代理(中间件) java编写
什么用? 集群、读写分离、分库分表
官网:http://www.mycat.org.cn/
分库概念:把表拆分到不同库中
分表概念:表达到千万级,把表水平拆分、分到多个数据库
数据库分布式:mycat作为中间件 解决高耦合问题,不需要程序作判断
多数据原组合:多主同时写入高可靠性、主从故障切换、存储一次性数据
二、
原理
1.1. 拦截sql 语句,对sql进行分析,分片分析、路由分析、读写分离分析、缓存分析等、再将sql发给后端真是数据库,返回结果适当处理(合并、排序、分页等处理)在返回给用户
1.3. 基础需要3台服务器,mycat、主、从
安装
2.1. Linux下安装方式
2.1.1. rpm 需要rpm包,按顺序安装
2.1.2. yum 直接联网安装
2.1.3. 解压安装直接使用
2.1.4. 解压编译安装
安装步骤
2.2.1. 进入官网:http://www.mycat.org.cn/
2.2.2. 点击下载
2.2.3. 点击1.6.5
2.2.4. 下载linux版
2.2.5. 把下载好的gz包 rz 上传到要安装的服务器opt目录下(需先安装好yum install lrzsz -y)
2.2.6. 进入opt 目录 使用tar -zxvf 命令安装
2.2.7. 把mycat 拷贝到 /usr/local下 cp -r mycat /usr/local (cp -r 递归拷贝)
2.2.8. Mycat目录结构
2.2.8.1. bin 可执行文件
2.2.8.2. conf 配置文件(rchema.xml、rule.xml、server.xml)
2.2.8.3. logs 日志
2.3. 修改配置文件rchema.xml、rule.xml、server.xml
2.3.1. server.xml:定义逻辑库、表、分片接点等内容
2.3.1.1. vim server.xml 找到user用户信息部分 用i 把root修改成mycat(区别于MysqL用户)保存退出
2.3.2. rule.xml:定义分片规则
2.3.3. schema.xml:定义用户以及系统相关变量,如端口
2.3.3.1. vim schema.xml 其中<table>是测试用的表信息 可以直接删除<schema></schema>之间的信息
2.3.3.2. <schema> 内参数信息
2.3.3.2.1. name="TESTDB" 逻辑库名称 之前在server.xml中配置
2.3.3.2.2. checksqlschema="false" 自动忽略表名前的数据库名
2.3.3.2.3. sqlMaxLimit="100" sql返回的最大行数限制
2.3.3.2.4. Datanode="dn1,dn2" 该属性用于绑定具体数据节点
2.3.3.2.5. randomDatanode="dn1" 新增属性指定节点,没有则随机发送
2.3.3.3. <heartbeat>select user()</heartbeat> 心跳检测 检测MysqL是否挂掉
2.3.3.4. <dataHost> 参数
2.3.3.4.1. Balance =0不开启读写分离,1双主双从,2读请求在读写主机随机分配,3所以读请求随机,写请求发送给写主机
更多属性说明:https://blog.csdn.net/lch520baby/article/details/89100176
2.3.3.4.2. Schema.xml参数说明 (读写服务器 按下面配置好即可)
2.3.3.5. 验证能否远程链接两台服务器上MysqL :MysqL -u账号 -p密码 -hIP -P端口
启动
2.4.1. 控制台启动 进入mycat/bin 下执行./mycat console (可以看到输出日志)
2.4.2. 后台启动 进入mycat/bin 下 ./mycat start
2.4.3. 重启mycat:进入mycat/bin 下 ./mycat restart
2.5. 启动报错 原因是因为没有java 环境 因为mycat是java程序
2.5.2. 官网:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
2.5.3. 上传到mycat服务器 解压tar -xvzf jdk-14.0.2_linux-x64_bin.tar.gz
2.5.4. 得到jdk-14.0.2拷贝 cp -r jdk-14.0.2 /usr/local/
2.5.5. 设置环境变量:vim /etc/profile
2.5.6. JAVA_HOME=/usr/local/jdk-14.0.2 PATH=$JAVA_HOME/bin:$PATH CLAsspATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME export PATH export CLAsspATH
2.5.7. 让配置生效:source /etc/profile
2.5.8. 验证配置:echo $JAVA_HOME
2.5.9. 修改mycat下的bin中的配置文件 wrapper.conf wrapper.java.command=安装目录/bin/java
2.5.10. 报错是因为 jdk 在1.8后移除了MaxPermSize 参数 在 mycat/conf/wrapper.conf下屏蔽MaxPermSize =64M
2.5.11. 从新启动 报错:Attribute "randomDatanode" must be declared for element type "schema" 因为之前在schema 只配置了randomDatanode 没有配置Datanode
2.5.12. 在次进入mycat/bin下输入./mycat console 启动成功
2.5.13. 安装mycat真TM好多坑
2.6.1. 命令:MysqL -umycat -p123456 -P9066 -h IP地址(9066 是维护端口 8066是使用端口)
2.6.2. 链接报错Warning: Using a password on the command line interface can be insecure.
使用其他服务器连接mycat测试 提示连接不成功 重启下mycat服务器和重启mycat 可能是因为mycat服务器上有MysqL 的问题具体不清楚 最后连接成功
2.6.5. 查看数据库只有一个逻辑库 说明链接是mycat
测试是否读写分离
2.7.1. use TESTDB进入逻辑库
2.7.2. show tables 查看是否有表 正常使用SQL查询就可以了
这样简单的mycat读写分离就搭建好了
进QQ群一起交流:829707388
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。