Mycat详解及配置读写分离(Centos7)
一.理论概述
原理简述
参考文档
MyCAT主要是通过对SQL的拦截,然后经过一定规则的分片解析、路由分析、读写分离分析、缓存分析等,然后将SQL发给后端真实的数据块,并将返回的结果做适当处理返回给客户端。功能简述
- 对数据库分片
通过设置条件,将统一数据库中的数据分散的存储到多个数据库中,达到负载均衡的效果 - 水平拆分
同一张表的不同记录,根据表的某个字段的某种规则拆分到多个数据库(主机)上,这既是水平拆分。单库业务表可能会过于庞大,存在单库读写与存储瓶颈,这种情况可以通过水平拆分解决 - 垂直拆分
不同的表切分到不同的数据库(主机)上,这就是垂直拆分。
一般按照业务表进行分类,划分为不同的业务、模块库,耦合度越低,越容易做垂直拆分 - 读写分离
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)的更多相关文章
- net Core 使用MyCat分布式数据库,实现读写分离
net Core 使用MyCat分布式数据库,实现读写分离 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题, ...
- MyCAT详解【转】
原文链接:MyCAT详解 作者:Rangle 一.MyCAT概述MyCAT是一款由阿里Cobar演变而来的用于支持数据库读写分离.分片的分布式中间件.MyCAT可不但支持Oracle.MSSQL.MY ...
- Mycat搭建负载均衡,读写分离的Mysql集群
Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...
- Mycat安装并实现mysql读写分离,分库分表
Mycat安装并实现mysql读写分离,分库分表 一.安装Mycat 1.1 创建文件夹 1.2 下载 二.mycat具体配置 2.1 server.xml 2.2 schema.xml 2.3 se ...
- Mysql主从配置+读写分离
Mysql主从配置+读写分离 MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...
- MyCat教程四:实现读写分离
本文我们来给大家介绍下通过MyCat来实现MySQL的读写分离操作 MyCat读写分离 一.读写分离配置 前面我们已经介绍过了mysql的主从同步和mycat的安装及相关配置文件的介绍,现在我们来 ...
- spring MVC、mybatis配置读写分离
spring MVC.mybatis配置读写分离 1.环境: 3台数据库机器,一个master,二台slave,分别为slave1,slave2 2.要实现的目标: ①使数据写入到master ②读数 ...
- log4j.properties 详解与配置步骤(转)
找的文章,供参考使用 转自 log4j.properties 详解与配置步骤 一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR ...
- MyBatis多数据源配置(读写分离)
原文:http://blog.csdn.net/isea533/article/details/46815385 MyBatis多数据源配置(读写分离) 首先说明,本文的配置使用的最直接的方式,实际用 ...
随机推荐
- Direct2D 学习笔记(1)概述
Direct2D 应用程序接口概述 资源网站 https://docs.microsoft.com/en-us/windows/win32/Direct2D/the-direct2d-api 主要用到 ...
- 【数据库开发】windows下使用c++调用redis
不废话,unix下c++调用 redis可以看这个: http://blog.csdn.net/youngqj/article/details/8266177 ==================== ...
- php开启多线程下载
php开启多线程下载 <pre><?php/** * 多进程批量下载文件(使用php curl_multi_exec实现) * Date: 2017-07-16 * Author: ...
- [转载]Oracle中动态SQL详解
1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...
- MapReduce 工作流程
1. Map 阶段 ============================================= 2. Reduce 阶段
- 路由器02---PandoraBox配置
1.安装libc 什么是libc,这里贴一个gnu官方的解释 Any Unix-like operating system needs a C library: the library which d ...
- VC++类型转换
一.其他数据类型转换为字符串 短整型(int) itoa(i,temp,10):///将i转换为字符串放入temp中,最后一个数便是十进制 itoa(i,temp,2):///按二进制方式转换 长整型 ...
- cv2.VideoWriter()指定写入视频帧编码格式
帧速率 fps 和 帧大小,通过VideoCapture类的get()函数得到. 编码参数:cv2.VideoWriter_fourcc('I','4','2','0')---未压缩的YUV颜色编码, ...
- python之SQLite笔记
sqlite3 打开文件并创建游标 conn = sqlite3.connect('adressbook.db')c = conn.cursor() 连接对象:sqlite3.connect('数据文 ...
- asp.net core-8. 配置的热更新
在asp.net core 发布了以后,在修改配置文件以后不需要重新发布,要实现只需要修改@inject IOptions<WebApplication1.Class> ClassAcce ...