基于Mycat实现的mysql的读写分离

mycat就相当于一个调度器,具有数据库分片功能,本身不存储数据, 其功能是对后端的真实数据库的数据,进行数据划分和数据整合,方便管理

HOW-Mycat-Read&&write separation

现在让我们通过mycat实现数据库的读写分离

本实验中其他配置文件,参见            基于mysql的主从复制之Mycat简单配置和高可用

定义读,写节点

vim   schema.xml

19                 <table name="employee" primaryKey="ID" dataNode="dn1,dn2"20                            rule="sharding-by-intfile" />43         <dataHost name="server33.lalala.com" maxCon="1000" minCon="10" balance="1"44                           writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">45                 <heartbeat>select user()</heartbeat>46                 <!-- can have multi write hosts -->47                 <writeHost host="hostM1" url="server33.lalala.com:3306" user="mycat"48                                    password="Mycat+007">49                         <!-- can have multi read hosts -->50 51                 <readHost host="hostS1" url="server55.lalala.com:3306" user="mycat"52                                    password="Mycat+007">53                 </readHost>     <!-- can have multi read hosts -->54                 <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->55                 </writeHost>56         </dataHost>                         writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">

参数说明:

balance=”1″ writeType=”0″ switchType=”1″

balance

1、balance=0 不开启读写分离机制,所有读操作都发送到当前可用的writehostle .

2、balance=1 全部的readhost与stand by writeHost 参与select语句的负载均衡。简单的说,双主双从模式(M1àS1,M2àS2,并且M1和M2互为主备),正常情况下,M1,S1,S2都参与select语句的复杂均衡。

3、balance=2 所有读操作都随机的在readhost和writehost上分发

writeType

负载均衡类型,目前的取值有3种:
1、writeType=”0″, 所有写操作发送到配置的第一个writeHost。
2、writeType=”1″,所有写操作都随机的发送到配置的writeHost。
3、writeType=”2″,不执行写操作。

switchType

1、switchType=-1 表示不自动切换
2、switchType=1 默认值,自动切换
3、switchType=2 基于MySQL 主从同步的状态决定是否切换

创建只写用户和只读用户

vim server.xml

80         <user name="mycat">81                 <property name="password">Mycat+007</property>82                 <property name="schemas">JamesMycatSchema</property>83 84                 <!-- 表级 DML 权限设置 -->85                 <!--            86                 <privileges check="false">87                         <schema name="TESTDB" dml="0110" >88                                 <table name="tb01" dml="0000"></table>89                                 <table name="tb02" dml="1111"></table>90                         </schema>91                 </privileges>           92                  -->93         </user>94 95         <user name="mycat_r">96                 <property name="password">cat</property>97                 <property name="schemas">JamesMycatSchema</property>98                 <property name="readOnly">true</property>99 100         </user>

检测

关闭salve的sql_线程

(因为我们要做读写分离,所以数据库的同步,会对实验造成干扰)

mysql>stop slave sql_thread;
在客户端登陆mycat:
插入数据:5,mydog,10010
mysql -umycat -pMycat+007 -h172.25.88.33 -P8066

插入之后再读取,也没有看见刚刚插入的id=5

在master(server33)的mysql数据库登陆,db1数据库中查询到了刚刚插入的数据,所以写操作是在master(server33)执行的.

slave(server44)的SQL线程被关闭了,所以slave(server44)的db1也没有id=5的数据

至此读写分离圆满成功~~~~~


时间: 2024-12-28 15:07:46

基于Mycat实现的mysql的读写分离的相关文章

MyCAT实现MySQL的读写分离

在MySQL中间件出现之前,对于MySQL主从集群,如果要实现其读写分离,一般是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度太高,如果我数据库的地址发生改变了,那么我程序端也要进行相应的修改,如果数据库不小心挂掉了,则同时也意味着程序的不可用,而这对很多应用来说,并不能接受. 引入MySQL中间件能很好的对程序端和数据库进行解耦,这样,程序端只需关注数据库中间件的地址,而无需知晓底层数据库是如何提供服务. 作为当前炙手可热的MySQL中间件,MyCAT实现MySQL主从集群的读写分离

mycat做Mysql的读写分离

在MySQL中间件出现之前,对于MySQL主从集群,如果要实现其读写分离,一般是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度太高,如果我数据库的地址发生改变了,那么我程序端也要进行相应的修改,如果数据库不小心挂掉了,则同时也意味着程序的不可用,而这对很多应用来说,并不能接受. 引入MySQL中间件能很好的对程序端和数据库进行解耦,这样,程序端只需关注数据库中间件的地址,而无需知晓底层数据库是如何提供服务. 作为当前炙手可热的MySQL中间件,MyCAT实现MySQL主从集群的读写分离

搭建基于MySQL的读写分离工具Amoeba

搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.20 多实例加主从复制 10.10.10.30 Amoeba服务器 10.10.10.40 客户端(最后测试使用) 1.首先搭建MySQL的主从复制(不在多提):需要注意的是:在主从库上需要创建一个用户,在主库上创建的用户为amoeba,权限是create,update,insert,delete:

通过mycat实现mysql的读写分离

mysql的主从配置沿用上一篇博客的配置:https://www.cnblogs.com/MasterSword/p/9434169.html mycat下载地址:http://www.mycat.io/ 试验版本:Mycat-server-1.6-release # cd /usr/local # mv ~/Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz /usr/local # tar -zxvf Mycat-server-1.6-R

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

net Core 使用MyCat分布式数据库,实现读写分离 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 MyCat2.0版本很快就发布了,关于MyCat的动态和一些问题,大家可以加一下MyCat的官方QQ群:106088787.我们今天主要介绍一下,在我们的Asp.net Core中如何使用Mycat,这源于一个大神(Amamiya Yuuko)的分享,但是,这中间还是有少许的 坑 : 首先,因为大神是比较忙的,而且主要分享关键技术,所以有些地方很简略,而往往这些简

利用amoeba实现mysql主从复制读写分离

一般大型网站为了缓解大量的并发访问,会在web端实现负载均衡,但是这是远远不够的.到了数据存储层.数据访问层,如果还是传统的架构,或者只是依靠一台服务器,大量的数据库连接操作,会导致数据库面临崩溃的危险.进而造成数据丢失,后果不堪设想.所以我们会考虑如何减少数据库的连接,一方面进行代码的优化,采用优秀的数据缓存技术如memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.今天我们就利用MySQL主从配置,实现读写分离,分散数据库的压力.这种方式,很多网站都有应用,今天

MySQL的读写分离的几种选择

MySQL的读写分离的几种选择 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 原址如下: http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步

Amoeba for MySQL的读写分离配置

一.Amoeba概述 1.amoeba简介 Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目.其主要功能包括读写分离,垂直分库,水平分库等,经过测试,发现其功能和稳定性都非常的不错,如果需要构架分布式数据库环境,采用Amoeba是一个不错的方案.目前Amoeba一共包括For aladdin,For MySQL和For Oracle三个版本,本文主要关注For MySQL版本的一个读写分离实现. Amoeba处于在应用和数据库之间,

mysql主从复制读写分离-Altas

mysql主从复制读写分离 本文读写分离使用的软件是Altas,altas是奇虎360公司开发的开源数据库代理软件.它是基于mysql-proxy开发而成的 它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡.读写分离.高可用性等需求. mysql读写分离原理: 数据库层在高并发的情况下,i/o会产生瓶颈.而实际上用户读的请求要远远大于写的请求. 使用代理服务作为数据库前端,将不同的请求根据规则分配到不同的后端数据上面去,比如将写的请求分