用mycat做读写分离:基于 MySQL主从复制
版权声明:本文为博主原创文章,未经博主允许不得转载。
mycat是最近很火的一款国人发明的分布式数据库中间件,它是基于阿里的cobar的基础上进行开发的
搭建之前我们先要配置MySQL的主从复制,这个过程很长,我这里就不写了,有兴趣的可以看看我写的这篇文章。
linux centos下mysql数据库的主从复制环境搭建
mycat在应用当中的作用可以看下图
mycat可以让程序员只需要关心业务代码的编写,而不用担心后端数据库集群的负载均衡,读写分离,分库分表的数据分片逻辑的编写,只要直接连接mycat就可以了
首先我们准备一台干净的centos机器,安装好jdk
解压mycat的安装包到/user/local/下
设置mycat的环境变量
- vi /etc/profile
使配置文件立即生效
- source /etc/profile
进入mycat的配置文件目录
- cd /usr/local/mycat/conf/
- vi schema.xml
这个配置文件主要是用来配置数据库节点,逻辑表等等东西的
- <?xml version="1.0"?>
- <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
- <mycat:schema xmlns:mycat="http://org.opencloudb/">
- <!-- 定义MyCat的逻辑库 -->
- <schema name="pcx_schema" checkSQLschema="false" sqlMaxLimit="100" dataNode="pcxNode"></schema>
- <!-- 定义MyCat的数据节点 -->
- <dataNode name="pcxNode" dataHost="dtHost" database="pcx" />
- <!-- 定义数据主机dtHost,连接到MySQL读写分离集群 ,schema中的每一个dataHost中的host属性值必须唯一-->
- <!-- dataHost实际上配置就是后台的数据库集群,一个datahost代表一个数据库集群 -->
- <!-- balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡-->
- <!-- writeType="0",所有写操作发送到配置的第一个writeHost,这里就是我们的hostmaster,第一个挂了切到还生存的第二个writeHost-->
- <dataHost name="dtHost" maxCon="500" minCon="20" balance="1"
- writeType="0" dbType="mysql" dbDriver="native" switchType="2" slaveThreshold="100">
- <!--心跳检测 -->
- <heartbeat>show slave status</heartbeat>
- <!--配置后台数据库的IP地址和端口号,还有账号密码 -->
- <writeHost host="hostMaster" url="192.168.1.6:3306" user="root" password="root" />
- <writeHost host="hostSlave" url="192.168.1.7:3306" user="root" password="root" />
- </dataHost>
- </mycat:schema>
接下来配置用户权限,系统变量
- vi server.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- - you may not use this file except in compliance with the License. - You
- may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - - Unless required by applicable law or agreed to in writing, software -
- distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
- License for the specific language governing permissions and - limitations
- under the License. -->
- <!DOCTYPE mycat:server SYSTEM "server.dtd">
- <mycat:server xmlns:mycat="http://org.opencloudb/">
- <system>
- <!-- 这里配置的都是一些系统属性,可以自己查看mycat文档 -->
- <property name="defaultSqlParser">druidparser</property>
- <property name="charset">utf8mb4</property>
- </system>
- <!-- 用户1,对应的MyCat逻辑库连接到的数据节点对应的主机为主从复制集群 -->
- <user name="user1">
- <property name="password">root</property>
- <property name="schemas">pcx_schema</property>
- </user>
- <!-- 用户2,只读权限-->
- <user name="user2">
- <property name="password">root</property>
- <property name="schemas">pcx_schema</property>
- <property name="readOnly">true</property>
- </user>
- </mycat:server>
修改防火墙,允许mycat的端口被外界访问
- vi /etc/sysconfig/iptables
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 8066 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 9066 -j ACCEPT
然后重启防火墙
- service iptables restart
- cd /usr/local/mycat/bin/
进入mycat的脚本目录
运行启动命令
- ./mycat start
我们可以使用mysql客户端连接或者navicat来连接mycat
接下来我们测试一下读写分离
进入mycat的日志目录
- cd /usr/local/mycat/logs/
先测试一下读操作
我们连接到mycat发送一句select *命令试试
可以看到select 操作被路由到了192.168.1.7也就是我们的slave节点
那么我们执行多次看看
结果还是被路由到了读节点
接下来我们测试一下写操作
可见插入被路由到了master节点
最后我们看看master的数据是否被同步到slave
记录成功的同步过来了,可见读写分离搭建成功。
用mycat做读写分离:基于 MySQL主从复制的更多相关文章
- 如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?
如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是 ...
- Database基础(六):实现MySQL读写分离、MySQL性能调优
一.实现MySQL读写分离 目标: 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台M ...
- mycat 实现读写分离
mycat 实现读写分离 配置mysql实现主从复制 安装jdk 安装mycat实现读写分离 tar zxf Mycat-server-1.6-RELEASE-20161028204710-sangn ...
- MySQL主从复制 + Mycat实现读写分离
说明:两台MySQL服务器都是使用CentOS6.5系统,MySQL版本为mysql-5.7.17 MySQL一主一被实现主从复制 注意:写包括insert,delete,update 操作:读只有s ...
- Spring002--实现读写分离(Mysql实现主从复制)
Spring AOP实现读写分离(Mysql实现主从复制) 本文来自于博客:http://www.cnblogs.com/bjlhx/p/8297460.html 一.背景 一般应用对数据库而言都是“ ...
- Mycat搭建负载均衡,读写分离的Mysql集群
Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...
- MySQL - MyCat 实现读写分离
前言 MyCat是一个彻底开源的,面向企业应用开发的大数据库集群,支持事务.ACID.可以替代MySQL的加强版数据库.其功能有可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群.融 ...
- SpringBoot 整合 MyCat 实现读写分离
MyCat一个彻底开源的,面向企业应用开发的大数据库集群.基于阿里开源的Cobar产品而研发.能满足数据库数据大量存储:提高了查询性能.文章介绍如何实现MyCat连接MySQL实现主从分离,并集成Sp ...
- Mycat实现读写分离,主备热切换
实验环境:ubutu server 14 Master IP:172.16.34.212 Slave IP:172.16.34.34.156 Mycat server IP:172.16.34.219 ...
随机推荐
- Tenegrad评价函数 分类: 图像处理 Opencv 2014-11-12 20:46 488人阅读 评论(0) 收藏
Tenegrad函数式一种常用的图像清晰度评价函数,是一种基于梯度的函数. 在图像处理中,一般认为对焦好的图像具有更尖锐的边缘,故具有更大的梯度函数值. Tenegrad函数使用Sobel算子提取水平 ...
- E. Dasha and Puzzle 数学题
http://codeforces.com/contest/761/problem/E 给出一颗树,要求在坐标系中用平行于坐标轴的线描绘出来. 要求边不能相交,而且点的坐标唯一. 注意到2^1 + 2 ...
- sdut1283Five in a Row, Again
一简单的状压题 比赛时跑偏了 ,脑子最近乱的跟浆糊似得呢.. #include <iostream> #include<cstdio> #include<cstring& ...
- java 对象流的简单使用
对象的输入输出流的作用: 用于写入对象 的信息和读取对象的信息. 使得对象持久化. ObjectInputStream : 对象输入流 ObjectOutPutStream :对象输出流 ...
- 【Mybatis】环境搭建
SqlMapConfig.xml(MyBatis配置文件) <?xml version="1.0" encoding="UTF-8" ?> < ...
- GCC的函数声明问题
Thinking in C++ 第四章 GCC 不需要再MAIN函数前声明 编译也能通过. G++不行.
- 锐动SDK应用于行车记录仪
方案架构 手机端直播与录播功能忠实记录旅途中各种突发事件,还原事实真相,与家人和朋友分享沿途美景,一同感受美妙之旅. 强大的视频编辑功能,像编辑图片一样给视频添加各种滤镜,配音,配乐,标题文字等特效. ...
- Swift 关键字 inout - 让值类型以引用方式传递
两种参数传递方式 值类型 传递的是参数的一个副本,这样在调用参数的过程中不会影响原始数据. 引用类型 把参数本身引用(内存地址)传递过去,在调用的过程会影响原始数据. 在 Swift 众多数据类型中, ...
- bzip2 一种块排序文件压缩软件
总览 bzip2 [ -cdfkqstvzVL123456789 ] [ filenames ... ] bunzip2 [ -fkvsVL ] [ filenames ... ] bzcat [ - ...
- Flask框架 之数据库扩展Flask-SQLAlchemy
一.安装扩展 pip install flask-sqlalchemy pip install flask-mysqldb 二.SQLAlchemy 常用的SQLAlchemy字段类型 类型名 pyt ...