博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mycat读写分离以及拆库拆表综合实验2:部署配置mycat读写分离与拆库拆表
阅读量:5898 次
发布时间:2019-06-19

本文共 2747 字,大约阅读时间需要 9 分钟。

部署 mycat

mycat基于java运行,检查java版本

[root@node119 ~]# java -versionopenjdk version "1.8.0_171"OpenJDK Runtime Environment (build 1.8.0_171-b10)OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)

配置java变量

[root@node119 ~]# vim /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-7.b10.el7.x86_64export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport PATH=$PATH:$JAVA_HOME/bin

mycat下载地址

http://dl.mycat.io/cd /opttar zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

大致架构图

Mycat读写分离以及拆库拆表综合实验2:部署配置mycat读写分离与拆库拆表

核心概念

  • schema:由多个数据库组成的逻辑数据库
  • datanode:将数据切分后,一个大表被分配到不同的分片数据库上,每个表分片所在的数据库就称为分片节点
  • datahost:一个或者多个分片节点所在的机器就是节点主机

分片节点与节点主机的概念稍微有点不好理解,举例来说,一张100W的表被分为两张表,前50W在A主机的数据库中,后50W在B主机的数据库中,表所在的数据库就称这张表的分片节点;一个主机中不可能只有一张表,会有许多的分片表放在该主机上,该主机就称为节点主机,即datanode=database@datahost

mycat原理的简单说明:

拦截--->分析--->转发--->结果处理--->返回给用户

mycat分析大致包括:分片分析,路由分析,读写分离分析,缓存分析等,在接下来的实验中会通过分析log来查看mycat如何工作。

需求说明

有一个库3张表

MySQL [mycat01]> show tables;+-------------------+| Tables in mycat01 |+-------------------+| t1                || t2                || t3                |+-------------------
  • 分库:

t1在mysql集群中

t2在percona集群中

  • 分表:

t3 id取模1024小于1024的在mysql集群中,大于1024则在percona集群中

  • 读写分离:

t1 writehost 为node115

stand by writehost 为node116
readhost 为node117
t2 writehost 为node126
readhost 为node123 node125

配置文件

#这里创建了两个mycat用户(注意:与后端mysql用户无关)root具有读写权限,user具有读权限[root@node119 ~]# vim /opt/mycat/conf/server.xml
123456
mycat01
user
mycat01
true

balance="0" 不开启读写分离,即所有读写操作都发送到writehost上

balance="1" 全部的readhost与stand by writehost都参与select语句的负载,也就是互为主从模式下

balance="2" 所有读写操作在readhost和writehost上随机分发

balance="3" 所有读请求都发送到与writehost对应的readhost上,减轻writehost压力

writeType="0" 所有的写操作发送到第一个writehost,当第一个writehots down后则切换到第二个,且不会回切

[root@node119 ~]# vim /opt/mycat/conf/schema.xml
#schema name就是映射出去的逻辑库名称,也就是访问mycat用户看到的名称
#t1所在的分片节点为mysql,也就是说mycat只会从mysql集群中去找t1
#通上
#mycat 会从两个分片节点去找t3
select user()
select user()
[root@node119 ~]# vim /opt/mycat/conf/rule.xml
2
512

转载于:https://blog.51cto.com/2143754/2119815

你可能感兴趣的文章
public/private/protected的具体区别
查看>>
面试宝典——求一个字符串中连续出现次数最多的子串
查看>>
VMware Workstation虚拟机上网设置
查看>>
Jenkins持续集成学习-搭建jenkins问题汇总
查看>>
leetcode:Invert Binary Tree
查看>>
C#Note13:如何在C#中调用python
查看>>
Android介绍以及源码编译---Android源码下载
查看>>
SpringBoot集成redis缓存
查看>>
万恶的浏览器兼容问题
查看>>
sql经典语句
查看>>
使用ffmpeg实现对h264视频解码 -- (实现了一个易于使用的c++封装库)
查看>>
第4周作业-面向对象设计与继承
查看>>
mb_strcut与mb_substr()
查看>>
机器学习的原理
查看>>
网页制作中最有用的免费Ajax和JavaScript代码库
查看>>
flink watermark介绍
查看>>
[Flink原理介绍第四篇】:Flink的Checkpoint和Savepoint介绍
查看>>
ELKF安装使用教程。elasticsearch+logstash+kibana+filebeta。
查看>>
mybatis学习之一 开发环境配置和接口编程
查看>>
SqlDataAdapter DataSet DataTable 详解
查看>>