一.理论概述

  • 原理简述

    参考文档

    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. thymeleaf动态拼接class

    场景:站内消息,一些已读的要区别与未读的. <table class="layui-table"> <thead> <tr> <th la ...

  2. Centos7安装php5.6并配置php-fpm协同工作

    yum install epel-release rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum in ...

  3. Apache配置优化之开启KeepAlive

    在HTTP 1.0中和Apache服务器的一次连接只能发出一次HTTP请求,而KeepAlive参数支持HTTP 1.1版本的一次连接,多次传输功能,这样就可以在一次连接中发出多个HTTP请求.从而避 ...

  4. 【计算机视觉】Selective Search for Object Recognition论文阅读2

    Selective Search for Object Recognition 是J.R.R. Uijlings发表在2012 IJCV上的一篇文章.主要介绍了选择性搜索(Selective Sear ...

  5. utf8 unicode 编码互转

    static function utf8_to_unicode($c) { switch(strlen($c)) { case 1: return ord($c); case 2: $n = (ord ...

  6. SQL语句 常用记录

    1,求平均,保留2位小数: ,)) as avg from {$table}; // amount为数据库某个字段 2,条件累加 , p1, )) AS cnt1 ; // 如果符合 cnt > ...

  7. linux系统下,在用户空间应用程序中模拟发送系统键盘事件

    Linux 有自己的 input 子系统,可以统一管理鼠标和键盘事件. 如果想模拟键盘事件,但是系统没有键盘设备该如何是好? 基于输入子系统实现的 input 可以方便的在用户空间模拟鼠标和键盘事件. ...

  8. c# 中对于每次修改的程序 都必须重新手动生成 才能编译的问题

    问题描述:原来用VS2017,升级了VS2019,发现修改了Winform界面,F5运行竟然还是原来的界面 问题解决: 需要修改两个地方 工具>> 选项>> 项目和解决方案&g ...

  9. IP地址 子网掩码 网络地址 主机地址 广播地址

    1.一定要明白各自的概念分别表示什么 IP地址:IP地址是用来识别网络上的设备,因此,IP地址是由网络地址与主机地址两部分所组成. 子网掩码:子网掩码不能单独存在,它必须结合IP地址一起使用.子网掩码 ...

  10. Windows下命令行Git无法显示中文问题解决方案

    Windows下Git设置编码正常显示中文: 在 CMD 下设置环境变量 set LESSCHARSET=utf-8 在 PowerShell 下设置环境变量 $env:LESSCHARSET='ut ...