一.理论概述

  • 原理简述

    参考文档

    MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。

  • 功能简述

  1. 对数据库分片

    通过设置条件,将统一数据库中的数据分散的存储到多个数据库中,达到负载均衡的效果
  2. 水平拆分

    同一张表的不同记录,根据表的某个字段的某种规则拆分到多个数据库(主机)上,这既是水平拆分。单库业务表可能会过于庞大,存在单库读写与存储瓶颈,这种情况可以通过水平拆分解决
  3. 垂直拆分

    不同的表切分到不同的数据库(主机)上,这就是垂直拆分。

    一般按照业务表进行分类,划分为不同的业务、模块库,耦合度越低,越容易做垂直拆分
  4. 读写分离

mycat功能也比较强大,本案例只是针对于读写分离进行测试

二.环境

ip 角色
192.168.111.8 mycat
192.168.111.100 写动作数据库
192.168.111.200 读操作数据库

三.部署

官网地址:http://www.mycat.io/

下载地址:http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

文档地址:http://www.mycat.io/document/Mycat_V1.6.0.pdf

  • 部署mycat
[root@localhost ~]# tar zxf jdk-8u191-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java8 [root@localhost ~]# rm -rf /usr/bin/java [root@localhost ~]# echo 'export JAVA_HOME=/usr/local/java8' >> /etc/profile
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/java8/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) [root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/ [root@localhost ~]# groupadd mycat
[root@localhost ~]# useradd -r -g mycat mycat
[root@localhost ~]# chown -R mycat.mycat /usr/local/mycat/ #下面是添加环境变量
[root@localhost ~]# echo 'PATH=$PATH:/usr/local/mycat/bin' >> /etc/profile
[root@localhost ~]# source /etc/profile [root@localhost ~]# tar zxf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local [root@localhost ~]# vim /usr/local/mycat/conf/server.xml 80 <user name="root"> #连接mycat的用户名
81 <property name="password">123456</property> #连接mycat对应的密码
82 <property name="schemas">test</property> #使用该用户名登录时,是用哪个数据库,这里写的是逻辑库名,在scheme.xml中会与物理库库名关联起来 94 <!--
95 <user name="user">
96 <property name="password">user</property>
97 <property name="schemas">TESTDB</property>
98 <property name="readOnly">true</property>
99 </user>
100 -->
#将这些注释掉,暂时用不到,我们只用上面一个用户 #这个配置文件就这些 5 <schema name="test" checkSQLschema="false" sqlMaxLimit="100">
6 <table name="test1" dataNode="dn1"/>
7 <table name="test2" dataNode="dn1"/>
8 <table name="test3" dataNode="dn1"/>
9 <table name="test4" dataNode="dn1"/>
10 <table name="test5" dataNode="dn1"/>
11 </schema>
#这些是提前定义的表,将这些表都写入dn1,dn1主机在下面配置文件会定义 14 <dataNode name="dn1" dataHost="test1" database="test" />
#database指定物理数据库的库名,将dn1,关联到test1,test1在下面配置文件定义 15 <dataHost name="test1" maxCon="1000" minCon="10" balance="1"
16 writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
#name:物理数据库名,与dataNode中dataHost对应
#calance:均衡负载的方式;1表示开启读写分离
#dbType:数据库类型
#writeType:写入方式 17 <heartbeat>select user();</heartbeat>
#heartbeat:心跳检测语句,注意语句结尾的分号要加。 18 <writeHost host="hostM1" url="192.168.111.100:3306" user="root"
19 password="123456">
20
21 <readHost host="hostS2" url="192.168.111.200:3306" user="root" password="123456" />
22 </writeHost>
24 </dataHost>
#以上配置达到的效果就是192.168.111.100为主库,192.168.111.200为从库。
#Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mycat的主从复制将数据复制到readhost [root@localhost ~]# /usr/local/mycat/bin/mycat start
#启动服务 [root@localhost ~]# netstat -lnpt | grep 8066
tcp6 0 0 :::8066 :::* LISTEN 60034/java [root@localhost ~]# yum -y install mariadb
[root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066
#安装mysql工具,进行测试一下 [root@localhost ~]# mysql -u root -p123456 -h192.168.111.8 -P8066 MySQL [(none)]>

暂时完结...

Mycat详解及配置读写分离(Centos7)的更多相关文章

  1. net Core 使用MyCat分布式数据库,实现读写分离

    net Core 使用MyCat分布式数据库,实现读写分离 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题, ...

  2. MyCAT详解【转】

    原文链接:MyCAT详解 作者:Rangle 一.MyCAT概述MyCAT是一款由阿里Cobar演变而来的用于支持数据库读写分离.分片的分布式中间件.MyCAT可不但支持Oracle.MSSQL.MY ...

  3. Mycat搭建负载均衡,读写分离的Mysql集群

    Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...

  4. Mycat安装并实现mysql读写分离,分库分表

    Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...

  5. Mysql主从配置+读写分离

    Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...

  6. MyCat教程四:实现读写分离

    本文我们来给大家介绍下通过MyCat来实现MySQL的读写分离操作 MyCat读写分离 一.读写分离配置   前面我们已经介绍过了mysql的主从同步和mycat的安装及相关配置文件的介绍,现在我们来 ...

  7. spring MVC、mybatis配置读写分离

    spring MVC.mybatis配置读写分离 1.环境: 3台数据库机器,一个master,二台slave,分别为slave1,slave2 2.要实现的目标: ①使数据写入到master ②读数 ...

  8. log4j.properties 详解与配置步骤(转)

    找的文章,供参考使用 转自 log4j.properties 详解与配置步骤 一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR ...

  9. MyBatis多数据源配置(读写分离)

    原文:http://blog.csdn.net/isea533/article/details/46815385 MyBatis多数据源配置(读写分离) 首先说明,本文的配置使用的最直接的方式,实际用 ...

随机推荐

  1. 启后台JOB处理单据遇到锁定问题

    /用户XXX已经处理采购凭证 9000036590 DN过账失败:/已冻结临时过账:用户 XXX已冻结编号范围 /用户XXX已经处理采购凭证 9000036589   ???问题:怎么检查采购订单正在 ...

  2. (十三)Centos之压缩和解压缩

    一.常用压缩格式 常用压缩格式:.zip .gz .bz2 常用压缩格式:.tar.gz  .tar.bz2 二.zip格式压缩 压缩文件:zip压缩文件名 源文件 压缩目录:zip -r 压缩文件名 ...

  3. ubuntu 18.04安装jdk8和eclipse

    JDK8的安装 1.安装ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 2.安装JDK sudo apt-ge ...

  4. 【c# 学习笔记】构造函数

    构造函数 主要用于创建类的实例对象.当调用构造函数创建一个对象时,构造函数会为对象分配内存空间,并初始化类的成员.构造函数分为实例构造函数和静态构造函数两种. 1.实例构造函数 实例构造函数用于创建和 ...

  5. React16+配置打包目录

    在学习react的时候,肯定最终都要用脚手架,对比了手写配置webpack(比较费劲).generator-react-webpack(打不开官方文档……),最终还是选择了react官方的create ...

  6. WIN10激活教程,亲测,有效

    WIN10激活教程: 1.打开开始菜单,找到设置,点开“更新和安全”,切换到“激活”选项卡,查看到当前系统的激活状态 2.在搜索框输入“CMD”,出现“命令提示符”工具时,右击选择“以管理员身份”运行 ...

  7. 搭建sqli靶场

    前言: sqli是一个印度程序员编写的,用来学习sql注入的一个游戏教程 sqli这个靶场对php7.0是不兼容的(因为一些函数在php7中被删除了),所以搭建的时候要下载php5,如果你的系统要下载 ...

  8. 【VS开发】fatal error C1853: "Debug\sift.pch"预编译头文件来自编译器的早期版本

    fatal error C1853: "Debug\sift.pch"预编译头文件来自编译器的早期版本 <pre id="best-content-12991040 ...

  9. Linux 安装环境初始化检查 安装Nginx

    一 .阿里云 centos 6.8 32 位裸环境 实现:Linux Nginx mysql php redis 查看当前安装的服务 [root@iZgahlk1l73998Z etc]# servi ...

  10. 2、2 唯一验证,这里我们强调后台的唯一验证&在保存之前进行验证

    后台 —————————————————————————————————————————————— @RequestMapping("/uniqueNameCheck") publ ...