版权声明:本文为博主原创文章,未经博主允许不得转载。

mycat是最近很火的一款国人发明的分布式数据库中间件,它是基于阿里的cobar的基础上进行开发的

搭建之前我们先要配置MySQL的主从复制,这个过程很长,我这里就不写了,有兴趣的可以看看我写的这篇文章。

linux centos下mysql数据库的主从复制环境搭建

mycat在应用当中的作用可以看下图

mycat可以让程序员只需要关心业务代码的编写,而不用担心后端数据库集群的负载均衡,读写分离,分库分表的数据分片逻辑的编写,只要直接连接mycat就可以了

首先我们准备一台干净的centos机器,安装好jdk

解压mycat的安装包到/user/local/下

设置mycat的环境变量

  1. vi /etc/profile

使配置文件立即生效

  1. source /etc/profile

进入mycat的配置文件目录

  1. cd /usr/local/mycat/conf/
  1. vi schema.xml

这个配置文件主要是用来配置数据库节点,逻辑表等等东西的

  1. <?xml version="1.0"?>
  2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
  3. <mycat:schema xmlns:mycat="http://org.opencloudb/">
  4. <!-- 定义MyCat的逻辑库 -->
  5. <schema name="pcx_schema" checkSQLschema="false" sqlMaxLimit="100" dataNode="pcxNode"></schema>
  6. <!-- 定义MyCat的数据节点 -->
  7. <dataNode name="pcxNode" dataHost="dtHost" database="pcx" />
  8. <!-- 定义数据主机dtHost,连接到MySQL读写分离集群 ,schema中的每一个dataHost中的host属性值必须唯一-->
  9. <!-- dataHost实际上配置就是后台的数据库集群,一个datahost代表一个数据库集群 -->
  10. <!-- balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡-->
  11. <!-- writeType="0",所有写操作发送到配置的第一个writeHost,这里就是我们的hostmaster,第一个挂了切到还生存的第二个writeHost-->
  12. <dataHost name="dtHost" maxCon="500" minCon="20" balance="1"
  13. writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
  14. <!--心跳检测 -->
  15. <heartbeat>show slave status</heartbeat>
  16. <!--配置后台数据库的IP地址和端口号,还有账号密码 -->
  17. <writeHost host="hostMaster" url="192.168.1.6:3306" user="root" password="root" />
  18. <writeHost host="hostSlave" url="192.168.1.7:3306" user="root" password="root" />
  19. </dataHost>
  20. </mycat:schema>

接下来配置用户权限,系统变量

  1. vi server.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- - - Licensed under the Apache License, Version 2.0 (the "License");
  3. - you may not use this file except in compliance with the License. - You
  4. may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
  5. - - Unless required by applicable law or agreed to in writing, software -
  6. distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
  7. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
  8. License for the specific language governing permissions and - limitations
  9. under the License. -->
  10. <!DOCTYPE mycat:server SYSTEM "server.dtd">
  11. <mycat:server xmlns:mycat="http://org.opencloudb/">
  12. <system>
  13. <!-- 这里配置的都是一些系统属性,可以自己查看mycat文档 -->
  14. <property name="defaultSqlParser">druidparser</property>
  15. <property name="charset">utf8mb4</property>
  16. </system>
  17. <!-- 用户1,对应的MyCat逻辑库连接到的数据节点对应的主机为主从复制集群 -->
  18. <user name="user1">
  19. <property name="password">root</property>
  20. <property name="schemas">pcx_schema</property>
  21. </user>
  22. <!-- 用户2,只读权限-->
  23. <user name="user2">
  24. <property name="password">root</property>
  25. <property name="schemas">pcx_schema</property>
  26. <property name="readOnly">true</property>
  27. </user>
  28. </mycat:server>

修改防火墙,允许mycat的端口被外界访问

  1. vi /etc/sysconfig/iptables
  1. -A INPUT -m state --state NEW -m tcp -p tcp --dport 8066 -j ACCEPT
  2. -A INPUT -m state --state NEW -m tcp -p tcp --dport 9066 -j ACCEPT

然后重启防火墙

  1. service iptables restart
  1. cd /usr/local/mycat/bin/

进入mycat的脚本目录

运行启动命令

  1. ./mycat start

我们可以使用mysql客户端连接或者navicat来连接mycat

接下来我们测试一下读写分离

进入mycat的日志目录

  1. cd /usr/local/mycat/logs/

先测试一下读操作

我们连接到mycat发送一句select *命令试试

可以看到select 操作被路由到了192.168.1.7也就是我们的slave节点

那么我们执行多次看看

结果还是被路由到了读节点

接下来我们测试一下写操作

可见插入被路由到了master节点

最后我们看看master的数据是否被同步到slave

记录成功的同步过来了,可见读写分离搭建成功。

http://blog.csdn.net/u011325787/article/details/51423424

用mycat做读写分离:基于 MySQL主从复制的更多相关文章

  1. 如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

    如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是 ...

  2. Database基础(六):实现MySQL读写分离、MySQL性能调优

    一.实现MySQL读写分离 目标: 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台M ...

  3. mycat 实现读写分离

    mycat 实现读写分离 配置mysql实现主从复制 安装jdk 安装mycat实现读写分离 tar zxf Mycat-server-1.6-RELEASE-20161028204710-sangn ...

  4. MySQL主从复制 + Mycat实现读写分离

    说明:两台MySQL服务器都是使用CentOS6.5系统,MySQL版本为mysql-5.7.17 MySQL一主一被实现主从复制 注意:写包括insert,delete,update 操作:读只有s ...

  5. Spring002--实现读写分离(Mysql实现主从复制)

    Spring AOP实现读写分离(Mysql实现主从复制) 本文来自于博客:http://www.cnblogs.com/bjlhx/p/8297460.html 一.背景 一般应用对数据库而言都是“ ...

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

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

  7. MySQL - MyCat 实现读写分离

    前言 MyCat是一个彻底开源的,面向企业应用开发的大数据库集群,支持事务.ACID.可以替代MySQL的加强版数据库.其功能有可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群.融 ...

  8. SpringBoot 整合 MyCat 实现读写分离

    MyCat一个彻底开源的,面向企业应用开发的大数据库集群.基于阿里开源的Cobar产品而研发.能满足数据库数据大量存储:提高了查询性能.文章介绍如何实现MyCat连接MySQL实现主从分离,并集成Sp ...

  9. Mycat实现读写分离,主备热切换

    实验环境:ubutu server 14 Master IP:172.16.34.212 Slave IP:172.16.34.34.156 Mycat server IP:172.16.34.219 ...

随机推荐

  1. 暴力 Codeforces Round #183 (Div. 2) A. Pythagorean Theorem II

    题目传送门 /* 暴力:O (n^2) */ #include <cstdio> #include <algorithm> #include <cstring> # ...

  2. 配置Ubuntu16.04第03步:安装搜狗输入法

    1.进入搜狗官网:https://pinyin.sogou.com/linux/ ,下载搜狗输入法安装包 2.使用dpkg命令安装Deb包: sudo dpkg -i sogoupinyin_2.0. ...

  3. PHP使用Session遇到的一个Permission denied Notice解决办法

    搜索 session.save_path 在这里你有两个选择,一个是像我一样用; 把这一行注释掉,另一个选择就是修改一个 nobody 用户可以操作的目录,也就是说有读写权限的目录,我也查了下这个默认 ...

  4. Android学习笔记(十五) Http

    1.Http协议概要 应用程序和服务间的请求/响应是无状态的,即响应完即断开连接. HttpClient库是Android自带的,故无需引入该库 2.Http请求和获取数据 生成代表客户端的HttpC ...

  5. IntelliJ IDEA导入JDK出现The selected directory is not a valid home for JDK问题的解决方法

    JDK版本与IDEA版本不兼容: JDK版本过高可能会造成这个问题,需与IDEA相兼容的JDK才行. 比如,用IDEA2016.3.8版本的,JDK用jdk-10.0.1_windows-x64_bi ...

  6. OC中文件读取类(NSFileHandle)介绍和常用使用方法

    NSFileHandle 1.NSFileManager类主要对于文件的操作(删除,修改,移动,赋值等等) //判断是否有 tagetPath 文件路径,没有就创建 NSFileManager *fi ...

  7. windows保存tomcat的控制台日志到文件

    startup.bat修改:call "%EXECUTABLE%" start %CMD_LINE_ARGS%改为:call "%EXECUTABLE%" ru ...

  8. Node.js——body方式提交数据

    引入核心模块 http,利用其 api(http.createServer) 返回一个 http.server 实例,这个实例是继承于net.Server,net.Server 也是通过net.cre ...

  9. jQuery 小实例 关于按字母排序

    jQuery的强大再次不再赘述 一般情况下操作表格式数据的一种最常见的任务就是排序,在一个大型的表格中,能够对要寻找的信息进行重新排列是非常重要的,一般情况用来完成排序的方式有两种 :一种是服务器端排 ...

  10. [转]c++应用程序文件的编译过程

    原文地址 这里讲下C++文件的编译过程及其中模板的编译过程: 一:一般的C++应用程序的编译过程.    一般说来,C++应用程序的编译过程分为三个阶段.模板也是一样的. 在cpp文件中展开inclu ...