linux安装mycat并且实现读写分离

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. 把下载好的gzrz 上传到要安装的服务器opt目录下(需先安装好yum install lrzsz -y)

2.2.6. 进入opt 目录 使用tar -zxvf 命令安装

2.2.7. mycat 拷贝到 /usr/localcp -r mycat /usr/local  (cp -r 递归拷贝)

2.2.8. Mycat目录结构

2.2.8.1. bin  可执行文件

2.2.8.2. conf 配置文件rchema.xmlrule.xmlserver.xml

2.2.8.3. logs 日志

2.3. 修改配置文件rchema.xmlrule.xmlserver.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 环境 因为mycatjava程序

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. 安装mycatTM好多坑

登录

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查询就可以了

2.7.3. 代码链接mycatTESTDB逻辑库

这样简单的mycat读写分离就搭建好了

进QQ群一起交流:829707388

原文地址:https://www.cnblogs.com/emmmmmm/p/13425308.html